前提条件
-
Ubuntu服务器:确保你的Ubuntu服务器已安装并启用SSH服务(OpenSSH)。
-
XShell:确保你已安装XShell(Windows环境下推荐的SSH客户端)。
-
权限:你需要对Ubuntu服务器具有管理员(sudo)权限或root访问权限。
-
网络连接:确保本地计算机和Ubuntu服务器之间的网络连通性。
步骤一:检查Ubuntu服务器上的SSH服务
-
登录Ubuntu服务器:
-
使用现有密码登录(如果尚未配置密钥认证)。
-
打开终端,运行以下命令检查SSH服务是否运行:
sudo systemctl status ssh
如果显示
Active: active (running)
,说明SSH服务正常运行。如果未运行,启用并启动:sudo systemctl enable ssh sudo systemctl start ssh
-
-
确保防火墙允许SSH:
-
如果Ubuntu启用了UFW防火墙,确保端口22(默认SSH端口)开放:
sudo ufw allow 22 sudo ufw status
-
步骤二:在本地计算机上生成SSH密钥对
-
打开XShell的密钥管理器:
-
启动XShell,点击菜单栏的 工具(Tools) -> 用户密钥管理器(User Key Manager)。
-
点击 生成(Generate) 按钮,选择密钥类型(推荐使用RSA,4096位)。
-
-
生成密钥对:
-
在弹出的窗口中,选择密钥类型(例如:RSA)和位数(4096位推荐)。
-
输入密钥名称(例如:
my_ssh_key
),可选择设置密码(Passphrase)以增加安全性。 -
点击 下一步(Next),XShell会生成公钥和私钥对。
-
保存公钥(
.pub
文件)和私钥(默认保存到C:\Users\YourUsername\Documents\NetSarang Computer\7\Xshell\Keys
)。
-
-
复制公钥内容:
-
打开生成的公钥文件(
.pub
),复制全部内容(格式类似:ssh-rsa 一长串字符 [email protected]
)。
-
步骤三:将公钥添加到Ubuntu服务器
-
登录Ubuntu服务器:
-
使用XShell通过密码方式临时连接到你的Ubuntu服务器(IP地址、用户名和密码)。
-
-
创建.ssh目录:
-
在服务器上,进入用户家目录并创建
.ssh
文件夹(如果不存在):mkdir -p ~/.ssh chmod 700 ~/.ssh
-
-
添加公钥到authorized_keys:
-
将复制的公钥内容追加到
~/.ssh/authorized_keys
文件中:echo '你的公钥内容' >> ~/.ssh/authorized_keys
替换
'你的公钥内容'
为从XShell复制的公钥字符串。例如:echo 'ssh-rsa AAAAB3NzaC1yc2E... [email protected]' >> ~/.ssh/authorized_keys
-
-
设置正确的文件权限:
-
确保
authorized_keys
文件具有正确的权限:chmod 600 ~/.ssh/authorized_keys
-
步骤四:在XShell中配置密钥认证
-
创建新会话:
-
在XShell中,点击 文件(File) -> 新建(New),输入Ubuntu服务器的IP地址和端口(默认22)。
-
在 用户认证(User Authentication) 部分,选择 公钥(Public Key) 作为认证方法。
-
-
选择私钥:
-
点击 浏览(Browse),选择之前生成的私钥文件(例如:
my_ssh_key
)。 -
如果设置了密码(Passphrase),输入对应的密码。
-
-
测试连接:
-
点击 连接(Connect),如果配置正确,你应该能够无需输入密码直接登录到Ubuntu服务器。
-
如果收到类似
The authenticity of host ... can't be established
的提示,输入yes
确认并继续。
-
步骤五:(可选)禁用密码认证以提高安全性
-
编辑SSH配置文件:
-
在Ubuntu服务器上,编辑SSH配置文件
/etc/ssh/sshd_config
:sudo nano /etc/ssh/sshd_config
-
找到以下行(如果没有,添加):
PasswordAuthentication no PubkeyAuthentication yes
-
保存并退出(在nano中,按
Ctrl+O
保存,Ctrl+X
退出)。
-
-
重启SSH服务:
-
应用更改:
sudo systemctl restart ssh
-
-
测试新配置:
-
使用XShell重新连接,确保密钥认证正常工作。如果无法连接,检查
sshd_config
和文件权限。
-
步骤六:备份和安全注意事项
-
备份私钥:
-
将私钥文件(例如:
my_ssh_key
)备份到安全位置(如加密的U盘)。 -
如果私钥丢失且密码认证已禁用,你将无法远程访问服务器。
-
-
保护私钥:
-
确保私钥文件仅限你访问,避免存储在共享或不安全的设备上。
-
如果设置了密码(Passphrase),定期更新并牢记。
-
-
检查服务器权限:
-
确保
~/.ssh
目录和authorized_keys
文件的权限正确(700 和 600)。 -
如果使用root账户配置用户密钥,确保
~/.ssh
目录属于正确用户:sudo chown user:user ~/.ssh
-
故障排查
-
无法连接:
-
检查服务器SSH服务是否运行:
sudo systemctl status ssh
。 -
确认防火墙或网络安全组是否允许端口22。
-
验证
~/.ssh/authorized_keys
中的公钥是否正确。
-
-
仍需密码:
-
确保
sshd_config
中的PubkeyAuthentication
设置为yes
。 -
检查
~/.ssh/authorized_keys
文件权限是否为 600。
-
-
XShell密钥问题:
-
确保选择了正确的私钥文件。
-
如果设置了密码(Passphrase),确认输入正确。
-