要通过Linux系统登录服务器,最常用且安全的方式是使用SSH(Secure Shell)协议,它通过加密传输保障数据安全,支持密码和密钥两种认证方式,以下是详细操作步骤及相关配置,帮助新手快速掌握服务器登录方法。
登录前准备
在开始操作前,需确认以下信息已准备就绪:
- 服务器信息:服务器的公网IP地址(或域名)、SSH服务端口(默认为22,若修改过需确认新端口);
- 登录凭证:用户名(如root、普通用户如ubuntu)及对应密码,或SSH密钥对;
- 网络连通性:确保本地Linux设备能访问服务器网络(可通过
ping IP
测试,若无法ping通需检查本地防火墙或服务器安全组策略); - SSH客户端工具:Linux系统默认已安装SSH客户端(通过
ssh -V
检查版本,通常无需额外安装)。
基础登录方式:密码认证
密码认证是最直接的登录方式,适合临时或一次性登录,但安全性低于密钥认证(易被暴力破解)。
操作步骤:
- 打开终端:在Linux系统中按下
Ctrl+Alt+T
(不同发行版快捷键可能略有差异,或通过应用程序菜单打开“终端”); - 输入SSH命令:格式为
ssh [用户名]@[服务器IP或域名]
,例如登录root用户(默认禁止直接root登录的服务器需改用普通用户,如ssh ubuntu@192.168.1.100
); - 确认主机密钥:首次登录时,终端会提示“Are you sure you want to continue connecting (yes/no)?”,输入
yes
并回车,此操作将服务器的主机密钥添加到本地~/.ssh/known_hosts
文件中,用于后续连接时验证服务器身份(防止中间人攻击); - 输入密码:根据提示输入服务器用户的密码,输入过程中终端不会显示字符(光标静止),输入完成后直接回车;
- 登录成功:密码正确后,终端会显示服务器欢迎信息(如Linux发行版版本、内核信息等),并进入命令行界面,此时可执行服务器命令。
示例命令:
ssh root@192.168.1.100
安全登录方式:SSH密钥认证
密钥认证通过“公钥+私钥”机制实现,私钥存储在本地,公钥上传至服务器,登录时无需输入密码,安全性更高(推荐长期使用场景)。
生成SSH密钥对
在本地Linux终端执行以下命令,生成RSA密钥对(默认位数为2048位,安全性足够,若需更高强度可指定-b 4096
):
ssh-keygen -t rsa -b 2048 -C "your_email@example.com"
执行后按提示操作:
- 指定密钥存储路径(直接回车使用默认路径
~/.ssh/id_rsa
); - 设置私钥密码(可选,建议设置,防止私钥泄露被他人盗用,若不设置则直接回车);
- 确认密码(若上一步设置了密码)。
生成完成后,~/.ssh/
目录下会新增两个文件:
id_rsa
:私钥(绝不能泄露或上传到服务器);id_rsa.pub
:公钥(需上传到服务器)。
上传公钥到服务器
使用ssh-copy-id
命令(推荐)
该命令会自动将公钥追加到服务器的~/.ssh/authorized_keys
文件中,并设置正确权限:
ssh-copy-id -i ~/.ssh/id_rsa.pub [用户名]@[服务器IP]
ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@192.168.1.100
执行后需输入服务器用户密码,验证成功后公钥即上传完成。
手动上传公钥
若服务器未启用ssh-copy-id
(如 minimal 安装的系统),可手动操作:
- 在本地查看公钥内容:
cat ~/.ssh/id_rsa.pub
- 复制输出的完整公钥(以
ssh-rsa
开头,以邮箱结尾); - 登录服务器(使用密码认证),执行以下命令创建
~/.ssh
目录(若不存在)并设置权限:mkdir -p ~/.ssh chmod 700 ~/.ssh
- 追加到
authorized_keys
文件:echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
- 设置
authorized_keys
文件权限(必须为600,否则SSH服务拒绝使用):chmod 600 ~/.ssh/authorized_keys
使用密钥登录
上传公钥后,再次执行SSH命令即可免密登录:
ssh ubuntu@192.168.1.100
若设置了私钥密码,首次使用时会提示输入私钥密码(后续可通过ssh-agent
管理密钥,避免重复输入)。
进阶配置:优化SSH登录体验
配置SSH别名(简化命令)
若服务器IP较长或登录频繁,可在本地~/.ssh/config
文件中配置别名(若无该文件需手动创建):
Host myserver HostName 192.168.1.100 User ubuntu Port 22 IdentityFile ~/.ssh/id_rsa Compression yes
配置后,直接执行ssh myserver
即可登录,无需每次输入完整IP和用户名。
修改默认端口(提升安全性)
默认SSH端口为22,易被扫描攻击,可修改为其他端口(如2222):
- 服务器端操作:编辑SSH配置文件
/etc/ssh/sshd_config
,找到#Port 22
,取消注释并修改为Port 2222
,保存后重启SSH服务:sudo systemctl restart sshd
- 本地客户端操作:若通过别名配置,需在
Host
段添加Port 2222
;若直接使用命令,需加-p
参数:ssh -p 2222 ubuntu@192.168.1.100
。
禁用密码登录(强制密钥认证,提升安全性)
为防止暴力破解,可在服务器端禁用密码登录,仅允许密钥认证:
编辑/etc/ssh/sshd_config
,确保以下配置生效:
PubkeyAuthentication yes # 启用密钥认证 PasswordAuthentication no # 禁用密码认证
保存后重启SSH服务:sudo systemctl restart sshd
。注意:操作前确保密钥登录已正常配置,否则可能无法登录服务器。
常见问题排查
问题现象 | 可能原因 | 解决方案 |
---|---|---|
Permission denied (publickey,password) |
公钥未正确上传;authorized_keys 权限错误;私钥路径错误。 |
重新上传公钥(检查~/.ssh/authorized_keys 是否包含公钥内容);执行 chmod 600 ~/.ssh/authorized_keys ;确认SSH命令中 IdentityFile 指向正确的私钥路径(默认~/.ssh/id_rsa )。 |
Connection timed out |
服务器未开启SSH服务; 服务器防火墙拦截22端口; 安全组策略未放行SSH端口。 |
执行sudo systemctl status sshd 检查服务状态,未启动则执行sudo systemctl start sshd ;服务器端开放SSH端口(如Ubuntu: sudo ufw allow 22 ;CentOS:sudo firewall-cmd --permanent --add-port=22/tcp 并重启防火墙);检查云服务器安全组(如阿里云、腾讯云)是否添加入方向规则,端口与服务器SSH端口一致。 |
Warning: Permanently added 'hostname' to the list of known hosts |
本地known_hosts 文件中记录的服务器主机密钥与当前不一致(如服务器重装系统后密钥变更)。 |
执行ssh-keygen -R [服务器IP] 删除旧记录,再次登录时会重新确认主机密钥。 |
相关问答FAQs
Q1:忘记服务器密码怎么办?
A:若登录的是普通用户,可通过root用户重置密码:
- 使用密码登录root账户(若未开启root密码登录,需通过VNC或控制台登录);
- 执行
passwd [普通用户名]
,按提示输入新密码两次; - 若无法登录root,且服务器支持救援模式(如阿里云、腾讯云云服务器),可通过控制台进入救援模式重置密码。
Q2:如何限制登录用户的访问权限?
A:可通过SSH配置文件限制特定用户登录:
- 编辑服务器
/etc/ssh/sshd_config
,添加以下配置(仅允许user1
和user2
登录):AllowUsers user1 user2
或拒绝特定用户登录(拒绝
user3
):DenyUsers user3
- 保存后重启SSH服务:
sudo systemctl restart sshd
; - 若需限制用户仅能执行特定命令(如仅允许
backup
用户执行rsync
命令),可在authorized_keys
文件中通过command
选项限制,command="/usr/bin/rsync --server",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2E... backup@server
通过以上步骤,即可安全、高效地使用Linux系统登录服务器,日常使用中,建议优先采用密钥认证并定期更新密钥,同时修改默认端口、禁用密码登录,以提升服务器安全性。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22308.html