Linux Trigger:如何使用SSH进行远程管理
导读:Linux下使用SSH进行远程管理的完整指南 一、前置准备:安装与启动SSH服务 SSH远程管理需要SSH客户端(发起连接)和SSH服务端(接受连接)配合使用。大多数Linux发行版默认安装了SSH客户端,但服务端需手动安装并配置。 安装...
Linux下使用SSH进行远程管理的完整指南
一、前置准备:安装与启动SSH服务
SSH远程管理需要SSH客户端(发起连接)和SSH服务端(接受连接)配合使用。大多数Linux发行版默认安装了SSH客户端,但服务端需手动安装并配置。
- 安装SSH服务端
- Debian/Ubuntu系统:执行
sudo apt update & & sudo apt install openssh-server
; - CentOS/RHEL系统:执行
sudo yum install openssh-server
。
- Debian/Ubuntu系统:执行
- 启动与启用服务
安装完成后,启动SSH服务并设置为开机自启:sudo systemctl start sshd # 启动服务(Ubuntu/Debian用'ssh') sudo systemctl enable sshd # 设置开机自启
- 检查服务状态
通过sudo systemctl status sshd
确认服务是否运行(显示“active (running)”即为正常)。
二、基础远程登录:SSH命令使用
- 基本登录语法
在本地终端输入以下命令,替换username
(远程服务器用户名)和remote_host
(服务器IP/域名):
例如:ssh username@remote_host
ssh root@192.168.1.100
。 - 首次连接确认
首次连接时,系统会提示“Are you sure you want to continue connecting (yes/no)?”,输入yes
并回车,将服务器指纹添加到本地~/.ssh/known_hosts
文件中。 - 密码认证
输入远程用户的密码(终端不会显示输入字符,输入完成后按回车即可登录)。 - 非标准端口登录
若SSH服务运行在非默认端口(如2222),需添加-p
参数:ssh -p 2222 username@remote_host
三、安全增强:SSH密钥认证(免密登录)
密码认证易受暴力破解,建议使用SSH密钥对(公钥+私钥)实现免密登录。
- 生成密钥对
在本地终端执行ssh-keygen -t rsa -b 4096
(推荐使用RSA 4096位或Ed25519算法),按提示选择密钥保存路径(默认~/.ssh/id_rsa
)和密码(可留空)。- 私钥:
~/.ssh/id_rsa
(需严格保密,仅本地保存); - 公钥:
~/.ssh/id_rsa.pub
(需上传至服务器)。
- 私钥:
- 上传公钥至服务器
使用ssh-copy-id
命令自动将公钥复制到服务器的~/.ssh/authorized_keys
文件中:
输入远程用户密码后,公钥将自动添加。ssh-copy-id username@remote_host
- 测试免密登录
再次执行ssh username@remote_host
,无需输入密码即可登录。
四、效率提升:SSH配置文件简化操作
通过编辑本地~/.ssh/config
文件,可为常用服务器设置别名,减少重复输入。
- 创建/编辑配置文件
执行nano ~/.ssh/config
(或vim ~/.ssh/config
),添加以下内容(以myserver
为例):Host myserver HostName 192.168.1.100 # 服务器IP/域名 User root # 登录用户名 Port 22 # SSH端口(默认22可省略) IdentityFile ~/.ssh/id_rsa # 私钥路径(密钥认证时需指定) ServerAliveInterval 60 # 每60秒发送保活信号(防止超时断开)
- 使用别名连接
配置完成后,直接输入ssh myserver
即可快速连接,无需再写完整命令。
五、常用高级操作:远程管理与文件传输
- 远程执行命令
不登录服务器即可执行命令,格式为ssh username@remote_host "command"
。例如:ssh root@192.168.1.100 "df -h" # 查看远程服务器磁盘空间 ssh user@myserver "systemctl restart nginx" # 重启远程Nginx服务
- SCP文件传输
- 本地→远程:
scp local_file username@remote_host:remote_path
(如scp ~/test.txt root@192.168.1.100:/tmp
); - 远程→本地:
scp username@remote_host:remote_file local_path
(如scp root@192.168.1.100:/tmp/test.txt ~/
); - 递归复制目录:添加
-r
参数(如scp -r ~/project root@192.168.1.100:/var/www
)。
- 本地→远程:
- SSH端口转发
- 本地端口转发:将本地端口映射到远程服务器端口,格式为
ssh -L local_port:remote_host:remote_port username@ssh_server
(如ssh -L 8080:localhost:80 myserver
,本地8080端口访问远程服务器的80端口); - 动态端口转发(SOCKS代理):
ssh -D local_port username@remote_host
(如ssh -D 1080 myserver
,本地1080端口作为SOCKS代理,用于访问远程网络资源)。
- 本地端口转发:将本地端口映射到远程服务器端口,格式为
六、安全加固:SSH服务配置优化
为防止未经授权的访问,需修改SSH服务配置文件/etc/ssh/sshd_config
(修改后需重启服务生效):
- 修改默认端口
将Port 22
改为其他端口(如Port 2222
),减少自动化工具的扫描攻击。 - 禁用root直接登录
设置PermitRootLogin no
,禁止root用户直接登录,建议使用普通用户登录后通过sudo
提权。 - 限制允许登录的用户
添加AllowUsers username1 username2
(如AllowUsers alice bob
),仅允许指定用户登录;或通过AllowGroups sshusers
限制用户组。 - 启用公钥认证
确保PubkeyAuthentication yes
(默认开启),禁用密码认证(PasswordAuthentication no
),仅允许密钥认证。 - 重启SSH服务
修改配置后,执行sudo systemctl restart sshd
使配置生效。
七、故障排除:常见连接问题解决
- 连接被拒绝
- 检查SSH服务是否运行:
sudo systemctl status sshd
(未运行则启动); - 检查防火墙是否放行SSH端口:
sudo ufw allow 22
(Ubuntu)或sudo firewall-cmd --add-port=22/tcp --permanent
(CentOS); - 检查服务器IP/端口是否正确。
- 检查SSH服务是否运行:
- 认证失败
- 密码认证失败:确认用户名/密码是否正确(注意大小写);
- 密钥认证失败:检查公钥是否已添加至服务器
~/.ssh/authorized_keys
文件,或私钥路径是否正确(IdentityFile
配置)。
- 主机密钥更改警告
若服务器IP或主机密钥变更,终端会提示“Host key verification failed”。需编辑本地~/.ssh/known_hosts
文件,删除对应服务器的旧密钥记录,重新连接确认。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Trigger:如何使用SSH进行远程管理
本文地址: https://pptw.com/jishu/726831.html