菜鸟科技网

远程登录Linux,这3种方式怎么选?

远程登录Linux服务器是系统管理员和开发人员日常工作中不可或缺的操作,它允许用户通过网络在本地计算机上控制远程Linux主机,进行命令行操作、文件管理、服务配置等任务,要实现安全高效的远程登录,需要掌握多种工具、配置方法及最佳实践,以下是详细的操作指南和注意事项。

远程登录Linux,这3种方式怎么选?-图1
(图片来源网络,侵删)

远程登录的主要工具及选择

远程登录Linux系统最常用的工具是SSH(Secure Shell),它提供了加密的通信通道,确保数据传输的安全性,除了SSH,还有Telnet、RDP(远程桌面协议)等方式,但由于安全性问题,Telnet已基本被淘汰,RDP则多用于Windows系统,SSH是Linux远程登录的首选工具,SSH协议有多种实现,包括OpenSSH(最常用)、Dropbear等,其中OpenSSH功能全面,支持端口转发、密钥认证等高级特性,是大多数Linux发行版的默认SSH实现。

使用SSH进行远程登录的基本步骤

确保远程主机已启用SSH服务

大多数Linux服务器默认安装了OpenSSH,但需要确保SSH服务正在运行,可以通过以下命令检查和启动服务:

  • 检查SSH服务状态:systemctl status sshd(CentOS/RHEL)或systemctl status ssh(Ubuntu/Debian)。
  • 启动SSH服务:sudo systemctl start sshdsudo systemctl start ssh
  • 设置开机自启:sudo systemctl enable sshdsudo systemctl enable ssh

获取远程主机的IP地址或域名

在登录前,需要知道目标Linux服务器的IP地址(如192.168.1.100)或域名(如example.com),IP地址可通过ifconfigip addr命令在远程主机上查看。

使用SSH命令登录

在本地终端中,使用以下基本语法登录远程主机:

远程登录Linux,这3种方式怎么选?-图2
(图片来源网络,侵删)
ssh username@remote_host
  • username:远程主机上的合法用户名(如root、ubuntu等)。
  • remote_host:远程主机的IP地址或域名。

以用户admin登录IP为192.168.1.100的主机:

ssh admin@192.168.1.100

首次登录时,系统会提示远程主机的密钥指纹不在本机的known_hosts文件中,输入yes即可继续,随后需要输入该用户的密码进行验证。

退出远程登录

完成操作后,输入exit或按Ctrl+D即可断开SSH连接。

SSH的高级配置与优化

使用SSH密钥认证提升安全性

密码认证虽然简单,但易受到暴力破解攻击,推荐使用SSH密钥认证(基于公钥-私钥对):

远程登录Linux,这3种方式怎么选?-图3
(图片来源网络,侵删)
  • 生成密钥对:在本地主机上运行ssh-keygen -t rsa -b 4096,按提示生成公钥(~/.ssh/id_rsa.pub)和私钥(~/.ssh/id_rsa),私钥需妥善保管,设置权限为600chmod 600 ~/.ssh/id_rsa)。
  • 上传公钥到远程主机:使用ssh-copy-id username@remote_host将公钥自动添加到远程主机的~/.ssh/authorized_keys文件中,手动上传则需将公钥内容追加到该文件中。
  • 登录验证:配置完成后,再次登录时无需输入密码,直接使用私钥验证即可:
    ssh -i ~/.ssh/id_rsa username@remote_host

SSH配置文件优化

通过修改远程主机的SSH配置文件(/etc/ssh/sshd_config)可以增强安全性和功能性,常用配置项包括:

  • Port 22:修改SSH默认端口(如Port 2222),避免被自动化攻击工具扫描。
  • PermitRootLogin no:禁止root用户直接登录,降低安全风险。
  • PasswordAuthentication no:禁用密码认证,强制使用密钥认证。
  • MaxAuthTries 3:限制每个连接的最大认证尝试次数。
  • AllowUsers admin john:限制允许登录的用户列表。

修改后需重启SSH服务:sudo systemctl restart sshd

使用SSH端口转发(隧道)

SSH支持端口转发,可用于安全访问内网服务或绕过防火墙限制,将本地端口8080转发到远程主机的80端口:

ssh -L 8080:localhost:80 username@remote_host

访问本地http://localhost:8080即可浏览远程主机的Web服务。

常见问题及解决方法

  1. 连接超时或拒绝连接:检查远程主机的SSH服务是否启动、防火墙是否允许SSH端口(默认22)的流量(sudo ufw allow 22sudo firewall-cmd --add-port=22/tcp --permanent)。
  2. 权限错误(如Permission denied (publickey,password):确认公钥是否正确添加到authorized_keys文件,文件权限是否正确(~/.ssh目录权限应为700authorized_keys权限应为600)。

相关问答FAQs

Q1: 如何避免每次SSH登录都输入密码?
A1: 通过SSH密钥认证实现,在本地生成密钥对后,将公钥上传到远程主机的~/.ssh/authorized_keys文件中,并确保远程主机的SSH配置启用密钥认证(PasswordAuthentication no),之后登录时即可免密验证。

Q2: SSH连接断开后如何保持会话持久化?
A2: 使用screentmux工具创建持久化会话,通过ssh username@remote_host登录后,运行screen -S session_name创建新会话,即使断开SSH连接,也可通过ssh username@remote_host -t screen -r session_name重新接入,或直接使用autossh工具自动重连。

分享:
扫描分享到社交APP
上一篇
下一篇