用途:
远程服务器 拉取 公司gitlab 服务器的代码
在需要拉取的服务器上 生成 ssh 密码
centos 为例:
cd ~
ssh-keygen -t rsa -C "xxxx@xxx.com"
注意:如果服务器本身已经存在了 ssh秘钥 可以在提示的时候重命名
进入 查看 生成的公钥
cat ~/.ssh/id_rsa.pub
复制这个公钥 添加在用户 SSH 密钥里面
注意:如果输入秘钥提示以下错误,则是复制的格式有问题,清除格式再复制进去就可以。
无法验证您输入的 SSH 密钥:ParsePublicKey: Invalid public key line: 2048 ....
在 .ssh 目录下 创建文件配置文件 config
vim ~/.ssh/config
内容如下:
# Git 限制域名
Host xxx.xxxx.com
User xxxx
Hostname xxx.xxxx.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# Git 不限主机
User xxxx
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
测试是否连接成功 xxx@xxxx.xxx.com 是 git ssh的地址
ssh -T xxx@xxx.xxx.com
第一次连接会提示如下 直接 输入 yes 下一步 之后就不会提示。
显示 welcome to gitlab 就表示链接成功。
参考文章:
https://www.cnblogs.com/superGG1990/p/6844952.html
https://blog.csdn.net/thy38/article/details/49827407
常见问题:
1、链接时出现 “ssh_exchange_identification: Connection closed by remote host” 或者 “ssh_exchange_identification: read: Connection reset by peer”
-解决办法:在服务端修改/etc/hosts.allow文件,加入 sshd:all
2、测试连接指定端口出现 ssh_exchange_identification: read: Connection reset by peer
无法连接
ssh -T xxx@xxx.xxx.com -p 10022
查看端口是否开放,如果不开放,则修改ssh的端口
telnet xxx.xxx.com 50022
gogs 添加SSH
测试返回以下内容表示连接成功:
[root@localhost]# ssh -T git@git.xxxx.com -p 10022
Hi there, You've successfully authenticated, but Gogs does not provide shell access.
If this is unexpected, please log in with password and setup Gogs under another user.
注意由于端口不是默认的 22端口 所以 git clone ssh地址的时候加上 ssh://
git clone ssh://git@git.xxxx.com:10022/web/api.git
3、配置docker gitea ssh链接出现 Permission denied (publickey)
这个是由于 .ssh 目理权限问题 或者 ~/.ssh/config
限制了 host
修改 docker gitea /data/git/.ssh
目录权限为 700或755,修改后链接成功
chmod -R 700 /data/git/.ssh
[root@localhost]# ssh -T git@git.xxxx.com -p 10022
Hi there, webhook! You've successfully authenticated with the key named develop-webhook, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.