zl程序教程

您现在的位置是:首页 >  后端

当前栏目

ssh/git pull 无密码登录 自动拉取

ssh密码Git自动密码 登录 拉取 pull
2023-06-13 09:11:05 时间

ssh/git pull 无密码登录 自动拉取

作者:matrix 被围观: 3,063 次 发布时间:2019-05-28 分类:Linux | 5 条评论 »

这是一个创建于 1191 天前的主题,其中的信息可能已经有所发展或是发生改变。

测试需要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