0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SSH常用命令详解

马哥Linux运维 来源:CSDN技术社区 2025-06-04 11:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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
    SSH
    +关注

    关注

    0

    文章

    198

    浏览量

    17562

原文标题:别再只会ssh连接了!这些SSH高阶命令让你的工作效率起飞​

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    windowsxp常用命令

    windowsxp常用命令   winver---------检查windows版本 wmimgmt.msc----打开windows管理体系结构(wmi) wupdmgr-------
    发表于 01-10 09:05 1438次阅读

    Ubuntu常用命令大全

    Ubuntu常用命令大全,包括常用管理目录,系统命令,硬盘相关,内存相关,查看进程等命令
    发表于 01-06 11:16 0次下载

    DOS常用命令宝典

    DOS常用命令宝典,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-10 18:24 0次下载

    04-shell的常用命令汇总与vim

    shell的常用命令汇总
    发表于 12-17 16:04 0次下载

    vim常用命令

    vim常用命令
    发表于 01-08 15:59 3次下载

    redis常用命令总结

    本文是对redis常用命令总结。
    发表于 02-09 11:25 1808次阅读

    Linux常用命令的全拼整理

    本文整理了常用命令的全拼,好像混进了什么奇怪的东西。
    的头像 发表于 10-10 17:19 5149次阅读

    Linux教程之Linux常用命令大全

    Linux教程之Linux常用命令大全
    的头像 发表于 03-30 10:34 6301次阅读

    linux常用命令手册

    linux常用命令手册免费下载。
    发表于 06-01 14:59 70次下载

    Memcache系统常用命令讲解

    Memcache系统常用命令讲解(无线电源技术商业计划书)-该文档为Memcache系统常用命令讲解文档,是一份还算不错的参考文档,感兴趣的可以下载看看,,,,,,,,,,,,,,,,
    发表于 09-28 11:27 5次下载
    Memcache系统<b class='flag-5'>常用命令</b>讲解

    linux常用命令大全

    linux常用命令大全,一些常用命令都可以找到
    发表于 03-03 09:20 0次下载

    DOS系统常用命令

    介绍了DOS系统的常用命令
    发表于 03-21 14:59 0次下载

    Linux常用命令

    Linux常用命令
    的头像 发表于 01-12 11:19 1607次阅读

    Linux常用命令手册分享

    linux常用命令合集
    发表于 04-26 11:46 1次下载

    详解kubectl常用命令

    详解kubectl常用命令
    的头像 发表于 11-05 15:39 2798次阅读
    <b class='flag-5'>详解</b>kubectl<b class='flag-5'>常用命令</b>