ssh/git pull 无密码登录 自动拉取
作者:matrix 被围观: 6,971 次 发布时间:2019-05-28 分类:Linux | 6 条评论 »
测试需要S,C两台服务器,我需要C服务器ssh登录到S服务器进行操作。
目的:服务器C端使用命令git pull
无密码登录自动从服务器S拉取最新代码。
客户端生成RSA密钥
服务器C属于客户端角色,需要生成本地服务器的rsa密钥对,然后价格公钥
发送到服务器S。
登录服务器C
$ cd ~
$ ssh-keygen -t rsa
#后面就默认回车
默认会在 ~/.ssh
中生成id_rsa.pub,id_rsa这两个密钥对。
发送公钥
我之前是手动尝试把公钥文本打来粘贴到服务器S,然而ssh登录的话还是要密码验证。测试发现最好是使用ssh-copy-id
命令进行操作。
还是在服务器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用户的密码,若出现and check to make sure that only the key(s) you wanted were added.
则表示公钥应该添加成功。
以免出现问题,现在可以去服务器S端看看,指定用户名login_user的文件/home/login_user/.ssh/authorized_keys
会有客户端的rsa公钥。
登录测试
在服务器C操作
测试登录:
ssh login_user@HOST -p 22
若登录成功 BINGO!
其他问题
如出现还是需要密码的情况:
1.需要确定/etc/ssh/sshd_config
配置文件中是否允许RSAAuthentication
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
2.用户目录权限问题
.ssh父目录的权限是755(我的是/root),.ssh目录权限是700,authorized_keys文件 600
3.确保仓库地址是ssh地址
如果还是https的话就用git remote set-url origin
命令修改下:
$ 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
你好
上面再讲什么啊?
👿 我就吐槽一下你的评论框。
真是太好了吧,给我提交这个BUG 😆 😆
我看看这个是什么原因。
Windows 7,macos 的Chrome都没看到这个问题 尴尬
为什么我这个录制的gif好糊 🙄 🙄