Skip to content

SSH 免密连接 Linux

生成 SSH 公钥

此步骤仅在你电脑未生成公钥时使用

shell
ssh-keygen  -t rsa

有时候生成的秘钥里是以 OPENSSL 开头的,如果想生成 RSA 开头的,需要指定格式为 PEM

shell
ssh-keygen -m pem -t rsa

服务器配置

  • 拷贝本机 .ssh/id_rsa.pub 里的内容到服务器 .ssh/authorized_keys 文件中 (进入此用户的.ssh 目录,将生成的公钥文件(默认为 id_rsa.pub)内容添加到与 sshd_config 中 AuthorizedKeysFile 设置项一样的文件(authorized_keys)中,如果没有.ssh 建立 .ssh 文件夹,赋权-R 700) 参考

本机配置服务器 IP 别名

  • 创建 .ssh/config 文件
cd .ssh/
touch config
vim config
  • 在 config 文件中加入类似如下配置:
Host               ali     //别名
HostName           106.15.199.100  //服务器 IP
Port               28    //ssh 端口
User               root   //登录用户
IdentityFile       ~/.ssh/id_rsa   //私钥  600权限

此时在本机就可以使用以下命令免密登录了。

ssh ali

SSH 连接的两种方式

  1. 把客户端公钥放到服务端authorized_keys
  2. 在服务端生成公钥私钥后,将服务端的公钥放到服务端的authorized_keys后,将服务端的私钥放到客户端,可用以下方式连接
shell
ssh -i [服务端私钥] root@xxx

Github 配置公钥后clone显示没权限

  1. 编辑 SSH 配置文件:

打开或创建 ~/.ssh/config 文件(权限655),并添加以下内容:

Host github.com
  Hostname ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_rsa