0%

ssh

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
2
3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorsizedKeysFile .ssh/authorized_keys

编辑完毕,再重启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
2
3
4
5
6
7
# comment
Host <alias of your hostname>
HostName <ip_address>
Port 22(ssh protocol port)
User root(default)
IdentityFile ~/.ssh/<your pub file, such as id_isa.pub>
PreferredAuthentications publickey

Github/Gitlab免密推送

在对应的ssh配置处,添加本机的ssh-pub-key即可