假使现在有A(客户端),B(服务端)两台服务器,需要在A服务器上免密scp传输文件到B服务器,操作如下。
1.在A服务器执行ssh-keygen -t rsa,生成配对秘钥,一直enter即可,注意不要输入passphrase(口令)。
执行完该命令后,会在当前用户的.ssh目录下生成id_rsa,id_rsa.pub两个文件
(.ssh是隐藏文件夹,使用ls -al命令查看隐藏文件夹)
2.执行以下命令将 id_rsa.pub(公钥)这个文件复制到B服务器用来登录用户的.ssh目录下,并重命名为authorized_keys
命令:scp -P 端口号 id_rsa.pub B服务器登录用户名@B服务器IP:~/.ssh/authorized_keys
注意:如果发现B服务器该用户的.ssh目录下已有authorized_keys文件,说明B服务器之前已经和其他服务器建立过信任链接,在此我们不能覆盖该文件,只需要将A服务器的公钥追加到B服务器的authorized_keys即可,命令:cat id_rsa.pub >>authorized_keys
至此,A服务器scp传输文件到B服务器或者A服务器从B服务下载文件均不再需要输入密码了。
同时,A服务器上ssh B服务器也不需要输入密码了。
说明:如果配置之后, A ssh B 发现仍然需要输入密码,可能是没有修改服务端(B服务器).ssh文件夹的权限导致的,进入到服务端的用户(.ssh)所在目录下,执行以下命令:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys