跳到主要内容

通过 ssh 免密登录云服务器

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。 SSH 通过在网络中创建安全隧道来实现 SSH 客户端与服务器之间的连接。虽然任何网络服务都可以通过 SSH 实现安全传输,SSH 最常见的用途是远程登录系统。

配置 ssh key

1、在本机生成密钥对,执行以下命令:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

根据提示输入剩下参数后按回车即可, 其中有一个设置私钥口令 passphrase, 输入后每次登录都需要输密码,建议不用设置

命令执行后会生成私钥文件 id_rsa 和公钥文件 id_rsa.pub。

2、复制公钥文件到远程主机

  • 通过密码登录后手动复制 id_rsa.pub 到远程主机的 ~/.ssh/authorized_key 文件中
  • 或执行以下命令:
# 此命令会将公钥写到远程主机的 ~/.ssh/authorized_key 文件中
ssh-copy-id -i /home/用户目录/id_rsa [email protected]
危险

参数 -i 指定要复制的标识文件(默认为~/.ssh/id_rsa)。如果未提供此选项,则会添加由命令ssh-add -L列出的所有key。 注意:它可以是多个密钥,添加额外的授权密钥很容易发生意外!如果ssh-add -L不返回任何key,则将使用~/.ssh/id*.pub

3、添加私钥到 ssh 代理

ssh-add ~/.ssh/id_rsa

到这里可以通过 ssh [email protected] 免密登录云服务器,不过每次都要输入 ip 也是有点麻烦,接下来我们继续优化

配置 ssh config 使用别名登录

~/.ssh/config 文件中写入如下格式配置:

Host blog # 主机别名
Hostname 192.168.1.1 # ip
User root # 登录用户,也可以是自定义的
Port 22 # ssh 端口
IdentityFile ~/.ssh/id_rsa # 私钥文件
AddKeysToAgent yes # 使用 ssh 别名登录时自动添加私钥到 ssh-agent

# 添加以下两项配置可以避免命令行窗口无操作一段时间后就会卡死的问题
ServerAliveInterval 120 # 每隔 120s 向服务器发送一次心跳
ServerAliveCountMax 10 # 若超过 10 次都没有发送成功,则断开与服务器端的连接

然后就可以通过输入 ssh blog 登录到远程主机啦。

参考

SSH 密钥的基本概述