title: ssh免密码登录Linux服务器,免密码推送git代码
date: 2018-08-04 00:49:05
tags: [Linux,ssh,git]
需求: 在本地windows和ubuntu使用同一套rsa秘钥免密码登录Linux服务器,推送git代码
- 生成你账户的rsa秘钥,如何生成ssh公钥
- 本地win10,打开git bash终端,我用的是cmder
-
ssh-keygen -t rsa -C <your_email@example.com>
# 生成你账户的rsa秘钥 - 中间要你输入密码,不要输入,直接回车,3次回车,看到如下所示的图表示秘钥对已经生成
+---[RSA 2048]----+
| .o.. |
| ++o |
| .o++. |
| .E= .o |
| .S +. . . |
| o = .= .|
| = . .oo+ |
| .o *o*..oo |
| o++=+@=+o.oo|
+----[SHA256]-----+
- 到代码托管网站添加公钥
生成的秘钥在C:\Users\你的用户名\.ssh
目录下。id_rsa
是私钥id_rsa.pub
是公钥
进入.ssh
目录,cat id_rsa.pub
,查看生成的公钥。复制此公钥(以ssh-rsa 开头,以你的邮箱结尾的字符串)
在代码仓库的设置页面添加此公钥
github的添加ssh公钥页面是 https://github.com/settings/keys
码云的是 https://gitee.com/profile/sshkeys
coding.net的是 https://coding.net/user/account/setting/keys
如果之前有添加过的公钥也没关系,可以添加多个,标题随便写。
添加好之后,可以使用命令
ssh -T git@github.com
, # github
ssh -T git@gitee.com
, # 码云
ssh -T git@git.coding.net
, # 码市
这3条命令查看是否能够连接到对应网站的服务器。如果配置正确,会出现successful
的信息。
添加公钥之后,就可以使用git@
开头的仓库地址推送代码了。并且不需要输密码。它们的关系如下:
git@github.com:xxx/xxxx.git ==> https://github.com/xxx/xxxx.git
git@gitee.com:xxx/xxxx.git ==> https://gitee.com/xxx/xxxx.git
git@git.coding.net:xxx/xxxx.git ==> https://git.coding.net/xxx/xxxx.git
- 配置本地ubuntu虚拟机ssh免密码登录远程服务器
把.ssh
目录下的id_rsa
和id_rsa.pub
文件复制到本地ubuntu虚拟机中。放在.ssh
目录下,并修改二者的权限为600.
chmod 600 ./id_rsa*
其实ubuntu下,可以使用命令ssh-keygen -t rsa
-t
是type,后面跟生成秘钥的类型,这个命令是生成rsa类型的秘钥。这里为了便于操作,直接复制生成好的秘钥对。
把id_rsa
私钥 和id_rsa.pub
公钥复制到远程服务器。
scp /home/<用户名>/.ssh/id_rsa* 用户名@服务器ip:/home/<用户名>/.ssh
# (确保服务器的路径正确。如果没有.shh目录,先创建一个)
先密码登录服务器,进入~/.ssh/
目录,
cat id_rsa.pub >>authorized_keys
# 将公钥添加至authorized_keys
文件(如果没有此文件,先创建)
更改 authorized_keys 文件的权限chmod 600 authorized_keys
下次即可在有私钥的电脑上(win10和虚拟机中的ubuntu)免密码登录你的远程服务器了
如果失败,请检查ssh服务是否正常运行。