需求:项目需要使用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命令。

弄完以上的问题后我就可以免密连接了。

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐