SSH (Secure Shell) 是一种用于在不安全网络上安全访问和管理远程服务器的协议。SSH 提供加密通信,确保数据传输的保密性和完整性。

使用用户名和主机名(或 IP 地址)连接到远程服务器:

1
2
3
4
5
6
7
8
9
10
ssh username@hostname
ssh -p port username@hostname
# 生成密钥对
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-keygen -t ecdsa -b 521 -C "your_email@example.com"
# 添加公钥到远程
ssh-copy-id username@hostname

# 手动添加公钥到远程服务器:
将 ~/.ssh/id_rsa.pub 的内容添加到远程服务器上的 ~/.ssh/authorized_keys 文件中。

SSH-Agent 和 SSH-Add

多次连接同一服务器:如果需要在一段时间内多次连接到同一服务器,使用 ssh-agentssh-add 可以避免每次连接时输入私钥密码。

连接多个服务器:如果你需要连接多个不同的服务器,使用 ssh-agent 可以管理多个私钥,简化身份验证过程。

Git 和其他工具:如果使用 Git 或其他需要 SSH 认证的工具,ssh-agentssh-add 可以方便地管理和使用私钥。

ssh-add 是用于将私钥添加到 ssh-agent 的工具。通过将私钥添加到 ssh-agent,只需在会话开始时输入一次私钥的密码(如果有设置密码)。

假设私钥文件是 ~/.ssh/id_rsa,可以使用 ssh-add 将其添加到 ssh-agent

1
2
3
4
5
6
7
8
9
10
11
# 启动
eval "$(ssh-agent -s)"
# 添加私钥到代理
ssh-add ~/.ssh/id_rsa

# 列出所有已添加的私钥的指纹和类型
ssh-add -l
# 移除特定私钥
ssh-add -d ~/.ssh/id_rsa
# 移除所有私钥
ssh-add -D

可以在本地的 ~/.ssh/config 文件中配置 SSH 连接的详细信息,以简化命令行输入。

1
2
3
4
5
6
7
Host myserver
HostName beizi.com
User username
Port 22
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes

为了安全性的一些设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 禁用密码认证,只允许公钥认证
PasswordAuthentication no
# 更改默认端口
Port 22222
# 允许特定用户登录
AllowUsers user1 user2
# 最大登录次数
MaxAuthTries 3
# 登录尝试间隔时间
LoginGraceTime 1m
# 禁止root用户登录
PermitRootLogin no
# 允许特定组
AllowGroups group1 group2
# 禁止特定组
DenyGroups group3 group4