SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中为网络服务提供安全的传输环境,通过SSH登录Linux服务器,用户可以远程执行命令、传输文件,并进行系统管理,其安全性高、操作便捷,是运维人员和开发者的常用工具,以下是SSH登录Linux服务器的详细步骤、配置优化及注意事项。

SSH登录的基本步骤
-
获取服务器信息
需要准备Linux服务器的IP地址(或域名)、端口号(默认为22)、用户名(如root或普通用户)以及密码或SSH密钥。 -
使用SSH客户端登录
- Windows系统:可使用PuTTY、Xshell等工具,在连接界面输入服务器IP、端口、用户名,选择“SSH”协议,点击连接后输入密码。
- Linux/macOS系统:打开终端,使用命令
ssh username@ip_address,例如ssh root@192.168.1.100,首次连接会提示确认主机指纹(输入yes),然后输入密码即可登录。
-
密钥登录(更安全)
为避免密码泄露风险,推荐使用SSH密钥对登录。- 生成密钥:本地执行
ssh-keygen -t rsa -b 4096,按提示生成公钥和私钥(默认存于~/.ssh/目录)。 - 上传公钥:将公钥内容(
id_rsa.pub)通过ssh-copy-id username@ip_address命令上传到服务器的~/.ssh/authorized_keys文件中。 - 登录:之后无需密码,直接执行
ssh username@ip_address即可登录。
- 生成密钥:本地执行
SSH服务器的配置优化
为提升安全性和便利性,可修改SSH服务配置文件(/etc/ssh/sshd_config),以下是常用优化项:

| 配置项 | 默认值 | 推荐值/修改说明 |
|---|---|---|
| Port | 22 | 修改为非默认端口(如2222),降低被扫描风险 |
| PermitRootLogin | yes | 禁止直接root登录,设为no,改用普通用户 sudo提权 |
| PasswordAuthentication | yes | 禁止密码登录,设为no,强制使用密钥对 |
| MaxAuthTries | 6 | 降低为3,防止暴力破解 |
| UseDNS | yes | 设为no,加快连接速度 |
| AllowUsers | 无 | 限制允许登录的用户(如AllowUsers user1 user2) |
修改后保存文件,执行systemctl restart sshd重启服务。
常见问题及注意事项
- 连接超时:检查服务器防火墙是否开放SSH端口(如
iptables -I INPUT -p tcp --dport 22 -j ACCEPT),或确认网络连通性。 - 权限错误:确保
.ssh目录权限为700,authorized_keys文件权限为600,否则密钥登录可能失败。 - 安全加固:定期更新SSH软件包(
yum update openssh-server或apt update && apt upgrade openssh-server),禁用不必要的用户登录。
相关问答FAQs
Q1: 忘记SSH密码怎么办?
A1: 若使用密码登录且忘记密码,可通过控制台(如VNC)或物理登录服务器重置用户密码,若仅忘记SSH密码但记得root密码,可登录后修改目标用户密码;若为密钥登录且丢失私钥,需重新生成密钥对并更新服务器公钥。
Q2: SSH登录时提示“Permission denied (publickey,password)”如何解决?
A2: 此错误通常由权限问题或认证配置错误导致,检查步骤:1. 确认服务器/etc/ssh/sshd_config中PasswordAuthentication是否为yes(若需密码登录);2. 检查本地私钥路径是否正确(默认~/.ssh/id_rsa);3. 验证服务器~/.ssh/authorized_keys文件是否包含正确的公钥,且权限设置正确(600)。

