SSH常用命令
SSH安装
1. ubuntu
sudoapt update# 更新仓库 sudoapt install openssh-server# 安装openssh vi /etc/ssh/sshd_config# 进入配置文件,找到port=22那行,取消注释 sudoservice ssh restart# 重启服务,然后就可以连接了,有时候root用户连不上,可以用普通用户登录再切换到root
1. SSH 连接命令
# 基本连接 ssh username@hostname # 指定端口连接 ssh -p 2222 username@hostname # 使用密钥连接 ssh -i /path/to/private_key username@hostname
2. SSH 密钥管理
# 生成 SSH 密钥对 ssh-keygen -t rsa -b 4096 # 复制公钥到远程服务器 ssh-copy-id username@hostname # 查看已知主机 cat~/.ssh/known_hosts
3.SSH传输文件
# 1、从服务器上下载文件 scp username@servername:/path/filename /var/www/local_dir(本地目录) # 例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录) # 2、上传本地文件到服务器 scp /path/filename username@servername:/path # 例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中 # 3、从服务器下载整个目录 scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录) # 例如:scp -r root@192.168.0.101:/var/www/test /var/www/ # 4、上传目录到服务器 scp -r local_dir username@servername:remote_dir # 例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录
4. SSH 端口转发
# 本地端口转发 ssh -L local_porttarget_port username@hostname # 远程端口转发 ssh -R remote_porttarget_port username@hostname #不发送任何命令,只用来建立连接。没有这个参数,会在 SSH 服务器打开一个 Shell。会在前台打开 ssh -R <服务器端口>22 -N root@<服务器地址> # 将SSH命令放到后台,如果想要停止需要杀死进程 ( 比较常用 ) ssh -R <服务器端口>22 -Nf root@<服务器地址> # 动态端口转发(SOCKS代理) ssh -D local_port username@hostname # 基本格式 ssh [选项] username@hostname # 常用选项说明 -L [本地IP:]本地端口:目标IP:目标端口 # 本地端口转发 -R [远程IP:]远程端口:目标IP:目标端口 # 远程端口转发 -D [本地IP:]本地端口 # 动态端口转发(SOCKS代理) # 重要的辅助选项 -N # 不执行远程命令,仅用于端口转发 -f # 后台运行 -C # 压缩数据传输 -q # 安静模式,减少日志输出 -v # 详细模式,用于调试 -vv # 更详细的模式 -4 # 仅使用 IPv4 -6 # 仅使用 IPv6 # 连接相关选项 -p 端口 # 指定 SSH 服务器端口 -i 密钥 # 指定私钥文件路径
5. SSH 配置管理
# 编辑 SSH 配置文件 vim ~/.ssh/config # 配置文件示例 Host myserver HostName hostname User username Port 2222 IdentityFile ~/.ssh/id_rsa
常见用途对比:
1.安全性
• 密码登录:便捷但相对不安全
• 密钥登录:更安全,推荐使用
2.传输方式
•scp:简单直接,适合临时传输
•rsync:支持增量传输,适合大量文件同步
3.端口转发
• 本地转发:访问远程内网服务
• 远程转发:让远程访问本地服务
• 动态转发:创建 SOCKS 代理
4.连接管理
• 普通连接:一次性使用
• 配置文件:适合经常连接的服务器
使用建议:
1. 优先使用密钥认证
2. 重要服务器建议修改默认 22 端口
3. 经常连接的服务器建议配置~/.ssh/config
4. 大文件传输建议使用rsync而不是scp
5. 注意保护好私钥文件的安全
这些命令和用法覆盖了日常 SSH 使用的大部分场景,建议根据实际需求选择合适的命令使用。
Ubuntu 下SSH 服务的启动、停止和管理方法:
安装 SSH服务
# 安装 OpenSSH 服务器 sudoapt update sudoapt install openssh-server
1. service 命令(传统方式)
# 启动 sudoservice ssh start # 停止 sudoservice ssh stop # 重启 sudoservice ssh restart # 查看状态 sudoservice ssh status
2. /etc/init.d 脚本方式
# 启动 sudo/etc/init.d/ssh start # 停止 sudo/etc/init.d/ssh stop # 重启 sudo/etc/init.d/ssh restart # 查看状态 sudo/etc/init.d/ssh status
3. systemctl 命令(现代 systemd 方式)
# 启动 sudosystemctl start sshd # 停止 sudosystemctl stop sshd # 重启 sudosystemctl restart sshd # 查看状态 sudosystemctl status sshd
4. 直接启动 sshd 进程
# 直接启动 sshd sudo/usr/sbin/sshd # 使用特定配置文件启动 sudo/usr/sbin/sshd -f /path/to/sshd_config
不同系统的区别:
1.Ubuntu/Debian系统中服务名通常是ssh
sudoservice ssh start
2.CentOS/RHEL系统中服务名通常是sshd
sudoservice sshd start
注意事项:
1. 现代 Linux 系统推荐使用systemctl命令
2.service命令在新系统中实际上是systemctl的封装
3./etc/init.d脚本方式是最传统的方法,但仍被支持
4. 直接启动sshd进程通常用于调试目的
选择哪种方式主要取决于:
• 系统版本
• 个人习惯
• 具体需求(如调试)
所有这些方法都能达到相同的目的,只是使用的方式不同。
3. SSH 配置文件位置
# 主配置文件 sudovim /etc/ssh/sshd_config # 常见配置项示例 Port 22 # SSH 端口 PermitRootLogin no # 禁止 root 登录 PasswordAuthenticationyes# 允许密码认证
4. 检查 SSH 服务
# 检查 SSH 是否正在运行 ps aux | grep ssh # 检查 SSH 端口是否开放 sudonetstat -tulpn | grep ssh # 检查防火墙是否允许 SSH sudoufw status
5. 防火墙设置
# 允许 SSH 连接 sudoufw allow ssh # 允许特定端口(如果修改了默认端口) sudoufw allow 2222/tcp
常见问题解决:
1.服务无法启动
# 查看详细日志 sudojournalctl -u ssh # 检查配置文件语法 sudosshd -t
2.权限问题
# 修复 SSH 目录权限 sudochmod755 /etc/ssh sudochmod600 /etc/ssh/ssh_host_*_key sudochmod644 /etc/ssh/ssh_host_*_key.pub
安全建议:
1.基本安全配置
# 编辑 SSH 配置文件 sudovim /etc/ssh/sshd_config # 推荐的安全设置 PermitRootLogin no PasswordAuthentication no MaxAuthTries 3 Protocol 2
2.使用密钥认证
# 在客户端生成密钥对 ssh-keygen -t rsa -b 4096 # 将公钥复制到服务器 ssh-copy-id username@server_ip
常用维护命令:
1.查看连接状态
# 查看当前 SSH 连接 who w # 查看 SSH 登录日志 sudocat/var/log/auth.log | grep ssh
2.配置文件备份
# 备份 SSH 配置 sudocp/etc/ssh/sshd_config /etc/ssh/sshd_config.backup
记住,每次修改 SSH 配置文件后,都需要重启 SSH 服务才能生效:
sudosystemctl restart ssh
这些是 Ubuntu 下管理 SSH 服务的基本操作,建议在修改配置时先备份,并保持一个可用的连接会话,以防配置错误导致无法连接。
SSH 问题
解决 ssh 连接远程主机超时未使用自动断开
参考:https://blog.csdn.net/Gelomen/article/details/109121069
这个问题可以通过配置 SSH 客户端来保持连接活跃。有以下几种解决方案: 1.修改 SSH 客户端配置文件(推荐方案): 编辑 ~/.ssh/config 文件(如果没有则创建),添加以下配置: Host * ServerAliveInterval60 ServerAliveCountMax3 这个配置的含义是: - ServerAliveInterval60:每60秒发送一次心跳包 - ServerAliveCountMax3:如果连续3次心跳包没有响应,则断开连接 2.在建立 SSH 连接时直接指定参数: ssh -o ServerAliveInterval=60-o ServerAliveCountMax=3user@remote-server 3.如果是在使用 SSH 隧道,可以这样: ssh -N -f -o ServerAliveInterval=60-o ServerAliveCountMax=3-L local-port:remote-host:remote-port user@remote-server 4.如果你是服务器管理员,也可以通过修改服务器端的 SSH 配置(/etc/ssh/sshd_config)来实现: ClientAliveInterval60 ClientAliveCountMax3 修改服务器配置后需要重启 SSH 服务: sudo systemctl restart sshd 推荐使用第一种方案(修改客户端配置文件),因为: 1.只需配置一次,永久生效 2.对所有 SSH 连接都有效 3.不需要每次手动输入参数 注意:设置的时间间隔不要太短(比如小于30秒),否则可能会增加不必要的网络开销。60秒通常是一个比较好的选择。
Windows 下关闭 SSH 后台连接的方法 (在使用端口转发设置参数为-f时)
1. 使用任务管理器:
# 打开任务管理器的方法: # 1. Ctrl + Shift + Esc # 2. 右键任务栏 -> 任务管理器 # 3. Ctrl + Alt + Delete -> 任务管理器 # 在"详细信息"或"进程"标签下找到 ssh.exe 进程并结束
2. 使用命令行查找和终止进程:
# PowerShell 命令 # 查看 SSH 进程 Get-Processssh # 终止所有 SSH 进程 Get-Processssh |Stop-Process # 或者使用 CMD 命令 # 查看 SSH 进程 tasklist | findstr"ssh" # 通过 PID 终止进程 taskkill /PID <进程ID> /F # 终止所有 SSH 进程 taskkill /F /IM ssh.exe
3. 如果使用 Git Bash:
# 查看 SSH 进程 ps aux | grep ssh # 终止进程 kill<进程ID>
建议:
1. 在使用-Nf启动 SSH 连接时,可以记录下进程 ID:
# 将进程 ID 保存到文件 ssh -Nf ... &echo$! > ssh_pid.txt
2. 创建一个批处理文件来管理连接:
@echo off REM start_ssh.bat ssh -Nf ... & echo %ERRORLEVEL% > ssh_pid.txt REM stop_ssh.bat for /f %%i in (ssh_pid.txt) do taskkill /PID %%i /F del ssh_pid.txt
链接:https://blog.csdn.net/qq_41685627/article/details/140019998
-
端口
+关注
关注
4文章
1097浏览量
33822 -
命令
+关注
关注
5文章
746浏览量
23441 -
Ubuntu
+关注
关注
5文章
603浏览量
32861 -
SSH
+关注
关注
0文章
198浏览量
17562
原文标题:别再只会ssh连接了!这些SSH高阶命令让你的工作效率起飞
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
windowsxp常用命令
Memcache系统常用命令讲解

SSH常用命令详解
评论