赞
踩
需求:项目需要使用shell脚本远程连接linux服务器(Ubuntu),本机也是linux系统(centos7.9)。
1、在本地系统上生成ssh密钥对
ssh-keygen -t rsa
按照提示操作,可以选择默认的文件路径和空密码。这将在~/.ssh目录下生成id_rsa(私钥)和id_rsa.pub(公钥)。
2、讲公钥复制到远程服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub ${REMOTE_USER}@${REMOTE_IP}
也可以手动将本地的公钥复制到远程服务器对应用户目录下的.ssh文件夹下的authorized_keys文件(即~/.ssh/authorized_keys 文件),在文件只做追加,不做覆盖,以免影响其他已经建立好的公钥。
此种方式需要注意.ssh文件夹和authorized_keys 文件的权限设置
.ssh 的权限需要为700
authorized_keys 的权限需要为600
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/authorized_keys
即可以在本地服务器上通过以下方式连接:
ssh -p 端口 用户名@ip
理论上是可以成功的。
本人完成后连接的时候还是需要手动输入远程连接服务器的密码的,本人做了以下检查和修改,就好了:
1、检查两个服务器上.ssh文件夹和authorized_keys的权限是否正常,过高过低都不行。
2、vi /etc/ssh/sshd_config下,执行 chmod g-w authorized_keys
3、在Server服务器上加载私钥文件:
在.ssh目录下,执行命令:
ssh-add id_rsa
系统如果提示:Identity added: id_rsa (id_rsa) 就表明加载成功了
下面有几个异常情况处理:
–如果系统提示:could not open a connection to your authentication agent
则需要执行一下命令:
ssh-agent bash
然后再执行上述的ssh-add id_rsa命令。
弄完以上的问题后我就可以免密连接了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。