SSH的目标:在不安全的网络上提供安全的网络服务。
SSH配置免密登录
要在自己电脑上免密登陆服务器,需要现在自己电脑上生成一个公钥
1 | ssh-keygen |
接下来会有三个配置项,一路回车用默认的即可
然后
1 | cd ~/.ssh |
可以看到一个文件叫做id_rsa.pub
,这个就是你的公钥,再在当前文件夹执行
1 | ssh-copy-id ubuntu@your_ip_address |
就可以把你的公钥拷贝到服务器的~/.ssh/authorized_keys
里面,当然你也可以手动拷贝,不过用vim进行拷贝的时候容易多一个空格或者多一个回车导致失效
这样就配置完毕了,如果不能免密登陆,检查服务器配置是否开启了免密登陆
1 | vim /etc/ssh/sshd_config |
检查下面几项是否配置正确
1 | RSAAuthentication yes |
编辑完毕,再重启ssh服务
1 | systemctl restart sshd.service |
ssh-copy-id命令解析
- ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,
- ssh-copy-id命令也会给远程主机的用户主目录(home)和
/.ssh, 和/.ssh/authorized_keys设置合适的权限。 - ssh-copy-id命令可以把本地的ssh公钥文件安装到远程主机对应的账户下。
达到的功能
ssh-copy-id - 将你的公共密钥填充到一个远程机器上的authorized_keys文件中。
使用模式
1 | ssh-copy-id [-i [identity_file]] [user@]machine |
描述
ssh-copy-id 是一个实用ssh去登陆到远程服务器的脚本(假设使用一个登陆密码,因此,密码认证应该被激活直到你已经清理了做了多个身份的使用)。
它也能够改变远程用户名的权限,~/.ssh
和~/.ssh/authorized_keys
删除群组写的权限(在其它方面,如果远程机上的sshd在它的配置文件中是严格模式的话,这能够阻止你登陆。)。如果这个
-i
选项已经给出了,然后这个认证文件(默认是~/.ssh/id_rsa.pub
)被使用,不管在你的ssh-agent那里是否有任何密钥。另外,命令
ssh-add -L”
提供任何输出,它使用这个输出优先于身份认证文件。如果给出了参数-i
选项,或者ssh-add
不产生输出,然后它使用身份认证文件的内容。一旦它有一个或者多个指纹,它使用ssh将这些指纹填充到远程机~/.ssh/authorized_keys
文件中。
自定义配置SSH
使用多个ssh-key
对,在本机~/.ssh/config
文件下,添加如下配置
1 | # comment |
Github/Gitlab免密推送
在对应的ssh配置处,添加本机的ssh-pub-key即可