测试需要S,C两台服务器,我需要C服务器ssh登录到S服务器进行操作。
目的:服务器C端使用命令无密码登录自动从服务器S拉取最新代码。
客户端生成RSA密钥
服务器C属于客户端角色,需要生成本地服务器的rsa密钥对,然后价格发送到服务器S。
登录服务器C
$ cd ~
$ ssh-keygen -t rsa
#后面就默认回车
默认会在 中生成id_rsa.pub,id_rsa这两个密钥对。
发送公钥
我之前是手动尝试把公钥文本打来粘贴到服务器S,然而ssh登录的话还是要密码验证。测试发现最好是使用命令进行操作。
还是在服务器C进行操作
$ ssh-copy-id -i ~/.ssh/id_rsa.pub login_user@HOST -p 22
说明:
ssh-copy-id命令可以快速的将公钥复制到远程主机
-i 指定公钥路径
login_user 为登录的用户名
HOST 为登录的远程服务器S的地址,域名/IP均可
-p 指定服务器S的ssh端口号
命令输入后应该会让你输入login_user用户的密码,若出现则表示公钥应该添加成功。
以免出现问题,现在可以去服务器S端看看,指定用户名login_user的文件会有客户端的rsa公钥。
登录测试
在服务器C操作
测试登录:
ssh login_user@HOST -p 22
若登录成功 BINGO!
其他问题
如出现还是需要密码的情况:
1.需要确定配置文件中是否允许
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
2.用户目录权限问题
3.确保仓库地址是ssh地址
如果还是https的话就用命令修改下:
$ git remote set-url origin git@HOST:user/project.git
参考:
https://blog.csdn.net/alifrank/article/details/48241699
https://blog.csdn.net/chengyuqiang/article/details/78432675
https://blog.csdn.net/b_x_p/article/details/78534423
https://www.cnblogs.com/0xcafebabe/p/5234678.html