Linux SSH 命令参数有哪些?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 参数 正文

基本连接参数

这些是日常使用中最核心、最常用的参数。

linux ssh 命令参数
(图片来源网络,侵删)
参数 全称 描述 示例
-l login_name 指定登录的用户名。 ssh -l user 192.168.1.100
-p port 指定连接的端口号(默认是 22)。 ssh -p 2222 user@hostname
-i identity_file 指定私钥文件进行身份验证。 ssh -i ~/.ssh/my_key user@host
-F configfile 指定一个非默认的 SSH 配置文件。 ssh -F ~/.ssh/custom_config my_server

认证与安全参数

这些参数控制身份验证的方式和安全级别。

参数 全称 描述 示例
-o option 这是最强大的参数,可以覆盖配置文件中的任何设置,可以多次使用。 ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" user@host
-o UserKnownHostsFile - 指定 known_hosts 文件的路径,用于自定义或禁用主机密钥验证。 ssh -o "UserKnownHostsFile=/dev/null" user@host
-o StrictHostKeyChecking - 设置是否严格检查主机密钥。yes (默认), no, askno 会自动接受新密钥,存在安全风险。 ssh -o "StrictHostKeyChecking=no" user@host
-o PasswordAuthentication - 禁用或启用密码认证,常与密钥认证结合使用。 ssh -o "PasswordAuthentication=no" user@host
-o PubkeyAuthentication - 禁用或启用公钥认证。 ssh -o "PubkeyAuthentication=no" user@host
-o ConnectTimeout - 设置连接超时时间(秒)。 ssh -o "ConnectTimeout=5" user@host
-o ServerAliveInterval - 如果服务器长时间无响应,客户端会发送一个 "keepalive" 包(单位:秒),防止连接被中间网络设备断开。 ssh -o "ServerAliveInterval=60" user@host
-o ServerAliveCountMax - 设置 ServerAliveInterval 的最大尝试次数。 ssh -o "ServerAliveInterval=60" -o "ServerAliveCountMax=3" user@host
-X - 启用 X11 转发,允许你在远程机器上运行图形界面程序,并显示在本地。 ssh -X user@host
-Y - 启用受信任的 X11 转发,比 -X 权限更高,安全性稍低,但兼容性更好。 ssh -Y user@host

连接行为与调试参数

这些参数用于控制连接过程和进行故障排查。

参数 全称 描述 示例
-v verbose 详细模式,打印出调试信息,可以重复使用(如 -vv, -vvv)来增加详细程度,排查连接问题时非常有用。 ssh -vv user@host
-q quiet 安静模式,不显示警告和诊断信息。 ssh -q user@host
-C compression 启用压缩,对于低速网络或传输文本文件可以提高速度。 ssh -C user@host
-N no-shell 不执行远程命令,通常用于端口转发,只建立连接通道。 ssh -N -L 8080:localhost:80 user@host
-f background 在后台运行,与 -N 或远程命令结合使用,将 ssh 放入后台执行。 ssh -f -N -L 8080:localhost:80 user@host
-g gateway_ports 允许远程主机连接到本地转发的端口,默认情况下,本地转发端口只绑定在 localhost 上,此参数允许绑定在 0.0.0 上。 ssh -g -L 8080:localhost:80 user@host
-4 ipv4 强制使用 IPv4 地址进行连接。 ssh -4 user@host
-6 ipv6 强制使用 IPv6 地址进行连接。 ssh -6 user@host
-T disable-pty 禁用伪终端分配,当你只想在远程机器上执行命令而不需要交互式 shell 时很有用。 ssh -T user@host "ls -l"

端口转发 (隧道)

这是 SSH 的一个强大功能,可以在不安全的网络上安全地传输其他协议的数据。

参数 全称 描述 示例
-L localport:host:hostport 本地转发,将本地机器的一个端口转发到远程机器的某个端口,格式:[bind_address:]port:host:hostport ssh -L 8080:remote_web_server:80 user@gateway (访问本地 8080 端口,流量会通过网关服务器到达远程 Web 服务器的 80 端口)
-R remoteport:host:hostport 远程转发,将远程机器的一个端口转发到本地机器的某个端口,格式:[bind_address:]port:host:hostport ssh -R 8080:localhost:80 user@gateway (在网关服务器上访问 localhost:8080,流量会通过 SSH 连接到达你本地的 80 端口)
-D port 动态 SOCKS 代理,创建一个 SOCKS 代理服务器,你的应用程序(如浏览器)可以通过它安全地访问网络。 ssh -D 1080 user@gateway (本地 1080 端口成为一个 SOCKS 代理)

实用技巧与常见组合

  1. 快速连接:在 ~/.ssh/config 文件中配置别名,避免每次都输入长串命令。

    linux ssh 命令参数
    (图片来源网络,侵删)
    # ~/.ssh/config
    Host myserver
        HostName 192.168.1.100
        User myuser
        Port 2222
        IdentityFile ~/.ssh/my_key
        ServerAliveInterval 60

    之后只需执行 ssh myserver 即可。

  2. 执行单条远程命令:直接在命令后跟要执行的命令。

    ssh user@host "ls -l /tmp"
  3. 安全地传输文件:虽然 scpsftp 是专门的文件传输工具,但它们底层就是 SSH。

    # 使用 scp (基于 ssh)
    scp -r /path/to/local/dir user@host:/path/to/remote/dir
    # 使用 sftp (交互式)
    sftp user@host
    sftp> put file.txt
  4. 调试连接问题:如果连接失败,使用 -v 查看详细信息。

    linux ssh 命令参数
    (图片来源网络,侵删)
    ssh -vv user@host

    输出会显示 DNS 解析、TCP 连接、密钥交换、认证等每一步的详细信息,是定位问题的利器。

  5. 避免输入密码:通过 ssh-keygen 生成密钥对,然后将公钥(~/.ssh/id_rsa.pub)复制到远程服务器的 ~/.ssh/authorized_keys 文件中,即可实现免密登录。

  6. 临时跳板机连接:当目标服务器无法直接访问,但可以通过一台跳板机(网关)访问时:

    # 方法1:使用 -J (Jump Host) 参数 (OpenSSH 7.3+ 推荐)
    ssh -J jump_user@jump_host target_user@target_host
    # 方法2:老方法,在 ~/.ssh/config 中配置 ProxyCommand
    Host target_host
        User target_user
        HostName target_host_ip
        ProxyCommand ssh jump_user@jump_host -W %h:%p

希望这份详细的列表能帮助你更好地掌握 ssh 命令!

-- 展开阅读全文 --
头像
Find X参数值多少?性能配置如何?
« 上一篇 今天
ipod touch 2参数
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]