ssh 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ssh 命令安装:


-bash/zsh: ssh command not found

#Debian
apt-get install openssh-client

#Ubuntu
apt-get install openssh-client

#Alpine
apk add openssh-client

#Arch Linux
pacman -S openssh-client

#Kali Linux
apt-get install openssh-client

#CentOS
yum install openssh-client

#Fedora
dnf install openssh-client

#OS X
brew install openssh-client

#Raspbian
apt-get install openssh-client

#Docker
docker run cmd.cat/ssh ssh

ssh 命令补充说明:


ssh(SSH 客户端)是用于登录到远程计算机并在远程计算机上执行命令的程序。它旨在通过不安全的网络在两个不受信任的主机之间提供安全的加密通信。X11 连接,任意 TCP 端口和 UNIX 域套接字也可以通过安全通道转发。

ssh 连接并登录到指定的 目的地,可以指定为 [user@]hostnamessh://[user@]hostname[:port] 形式的 URI 。用户必须使用几种方法之一(请参见下文)向远程计算机证明其身份。

如果指定一个 command 它将在远程主机而不是登录 Shell 上执行。

ssh 命令语法:


ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J destination] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command]

ssh 命令选项:


-4
强制ssh仅使用IPv4地址。

-6
强制ssh仅使用IPv6地址。

-A
启用来自身份验证代理的连接转发,例如 ssh-agent(1)。也可以在配置文件中按主机指定。
应谨慎启用代理转发。能够绕过远程主机(对于代理的UNIX域套接字)上的文件权限的用户可以通过转发的连接访问本地代理。攻击者无法从代理获取密钥材料,但是攻击者可以对密钥执行操作,以使其能够使用加载到代理中的身份进行身份验证。一种更安全的选择是使用跳转主机(请参阅参考资料 -J)。

-a
禁用身份验证代理连接的转发。
-B bind_interface
绑定到的地址 bind_interface在尝试连接到目标主机之前。这仅在具有多个地址的系统上有用。

-b bind_address
使用 bind_address在本地计算机上作为连接的源地址。仅在具有多个地址的系统上有用。

-C
请求压缩所有数据(包括stdin,stdout,stderr和转发的X11,TCP和UNIX域连接的数据)。压缩算法与 
gzip(1)。在调制解调器线路和其他慢速连接上需要压缩,但是压缩只会减慢快速网络上的速度。可以在配置文件中逐个主机设置默认值。见Compression选项。

-c cipher_spec
选择用于加密会话的密码规范。 cipher_spec是按优先顺序列出的密码的逗号分隔列表。请参阅中的Ciphers 关键字ssh_config(5) 想要查询更多的信息。

-D [bind_address:]港口
指定本地“动态”应用程序级端口转发。这是通过分配一个套接字来监听的 港口 在本地,可以选择绑定到指定的 bind_address。每当与此端口建立连接时,都会通过安全通道转发该连接,然后使用该应用协议来确定从远程计算机连接到的位置。当前支持SOCKS4和SOCKS5协议,它们ssh将充当SOCKS服务器。只有root可以转发特权端口。动态端口转发也可以在配置文件中指定。
可以通过将地址括在方括号中来指定IPv6地址。只有超级用户可以转发特权端口。默认情况下,本地端口是根据GatewayPorts设置绑定的 。但是, bind_address可用于将连接绑定到特定地址。的bind_address “ localhost”的“-”表示侦听端口仅在本地使用,而空地址或“ *”表示该端口应可从所有接口使用。

-E log_file
将调试日志附加到 log_file 而不是标准错误。

-e escape_char
设置带有pty的会话的转义字符(默认值:' ~')。转义字符只能在行的开头识别。转义字符后.接点(' ')会关闭连接;然后由control-Z暂停连接;然后自己发送一次转义字符。将字符设置为“ none”将禁用所有转义,并使会话完全透明。

-F 配置文件
指定备用的每用户配置文件。如果在命令行上给出了配置文件,则系统范围的配置文件(/ etc / ssh / ssh_config)将被忽略。每个用户的配置文件的默认值为 〜/ .ssh / config。如果设置为“ none”,则不会读取任何配置文件。

-f
ssh在执行命令之前请求进入后台。如果ssh要询问密码或密码短语,但用户希望在后台输入密码或密码短语,这将很有用。这意味着-n。建议在远程站点上启动X11程序的方法是使用 ssh -f host xterm。
如果ExitOnForwardFailure 配置选项设置为“ yes”,则以其启动的客户端-f将等待所有远程端口转发成功建立,然后再将其置于后台。

-G
导致ssh在评估后打印其配置,Host并Match 阻止并退出。

-g
允许远程主机连接到本地转发的端口。如果用于多路复用连接,则必须在主进程上指定此选项。

-I pkcs11
指定ssh用于与提供用户身份验证密钥的PKCS#11令牌进行通信的PKCS#11共享库。

-i identity_file
选择一个文件,从中读取用于公共密钥身份验证的标识(私有密钥)。默认是 〜/ .ssh / id_dsa, 〜/ .ssh / id_ecdsa, 〜/ .ssh / id_ecdsa_sk, 〜/ .ssh / id_ed25519, 〜/ .ssh / id_ed25519_sk 和 〜/ .ssh / id_rsa。身份文件也可以在配置文件中按主机指定。可能有多个-i选项(以及在配置文件中指定的多个标识)。如果CertificateFile指令未明确指定证书, ssh还将尝试从通过追加获得的文件名中加载证书信息-cert.pub 标识文件名。

-J 目的地
首先ssh 连接到以下描述的跳转主机,以连接到目标主机目的地 然后从那里建立到最终目标的TCP转发。可以指定多个跳数,用逗号分隔。这是指定ProxyJump 配置指令的快捷方式。请注意,命令行上提供的配置指令通常适用于目标主机,而不适用于任何指定的跳转主机。使用〜/ .ssh / config 指定跳转主机的配置。

-K
启用基于GSSAPI的身份验证,并将GSSAPI凭据转发(委托)到服务器。

-k
禁用将GSSAPI凭据转发(委派)到服务器。

-L [bind_address:]港口:主办:主机端口
 
-L [bind_address:]港口:remote_socket
 
-L local_socket:主办:主机端口
 
-L local_socket:remote_socket
指定将与本地(客户端)主机上给定的TCP端口或Unix套接字的连接转发到远程的给定主机和端口或Unix套接字。这通过分配套接字来侦听TCP来工作港口 在本地,可以选择绑定到指定的 bind_address或Unix套接字。每当与本地端口或套接字建立连接时,该连接都会通过安全通道转发,并且会与其中一个建立连接主办 港口 主机端口或Unix套接字 remote_socket,来自远程计算机。
端口转发也可以在配置文件中指定。只有超级用户可以转发特权端口。可以通过将地址括在方括号中来指定IPv6地址。

默认情况下,本地端口是根据GatewayPorts设置绑定的 。但是, bind_address可用于将连接绑定到特定地址。的bind_address “ localhost”的“-”表示侦听端口仅在本地使用,而空地址或“ *”表示该端口应可从所有接口使用。

-l 登录名
指定用户以远程计算机上的身份登录。也可以在配置文件中按主机指定。

-M
将ssh客户端置于“主”模式以进行连接共享。多个-M选项ssh进入“主”模式,但需要使用进行确认 ssh-askpass(1)在每个更改多路复用状态(例如,打开新会话)的操作之前。请参阅的描述 ControlMaster中 ssh_config(5) 有关详细信息。

-m mac_spec
以逗号分隔的MAC(消息认证代码)算法列表,按优先顺序指定。有关MACs 更多信息,请参见关键字。

-N
不要执行远程命令。这对于仅转发端口很有用。

-n
从重定向标准输入 / dev /空(实际上,防止从stdin读取)。ssh在后台运行时必须使用此选项。一个常见的技巧是使用它在远程计算机上运行X11程序。例如,ssh -n shadows.cs.hut.fi emacs &将在shadows.cs.hut.fi上启动emacs,X11连接将自动通过加密通道转发。该ssh程序将置于后台。(如果ssh 需要输入密码或密码,此功能将无效;另请参阅该 -f选项。)

-O ctl_cmd
控制活动连接多路复用主进程。当 -O指定选项, ctl_cmd参数被解释并传递给主进程。有效命令为:“检查”(检查主进程正在运行),“转发”(请求转发而不执行命令),“取消”(取消转发),“退出”(请求主退出)和“停止” ”(请求主站停止接受进一步的多路复用请求)。

-o 选项
可用于以配置文件中使用的格式提供选项。这对于指定没有单独的命令行标志的选项很有用。有关下面列出的选项及其可能值的完整详细信息,请参见ssh_config(5)。
 
-p 港口
连接到远程主机上的端口。可以在配置文件中按主机指定。

-Q query_option
查询ssh指定版本2支持的算法。可用功能包括: 密码 (支持的对称密码), 密码验证 (支持经过身份验证的加密的对称密码), 救命(支持与该-Q标志一起使用的查询字词), 苹果电脑 (受支持的消息完整性代码), 凯克斯 (密钥交换算法), 键 (密钥类型), 密钥证书 (证书密钥类型), 关键平原 (非证书密钥类型), 关键信号 (所有密钥类型和签名算法), 协议版本 (受支持的SSH协议版本),以及 信号(支持的签名算法)。或者,来自的任何关键字 ssh_config(5) 要么 sshd_config(5) 可以将采用算法列表的代码用作相应的query_option的别名。
-q
静音模式。使大多数警告和诊断消息被抑制。

-R [bind_address:]港口:主办:主机端口
 
-R [bind_address:]港口:local_socket
 
-R remote_socket:主办:主机端口
 
-R remote_socket:local_socket
 
-R [bind_address:]港口
指定将到远程(服务器)主机上给定TCP端口或Unix套接字的连接转发到本地。
这通过分配套接字来侦听TCP来工作 港口或远程端的Unix套接字。每当与此端口或Unix套接字建立连接时,该连接都会通过安全通道转发,并且连接是从本地计算机建立的,或者是由主办 港口 主机端口, 要么 local_socket,或者,如果未指定任何明确的目的地,ssh则将充当SOCKS 4/5代理,并将连接转发到远程SOCKS客户端请求的目的地。

端口转发也可以在配置文件中指定。仅当以root用户身份在远程计算机上登录时,特权端口才能转发。可以通过将地址括在方括号中来指定IPv6地址。

默认情况下,服务器上的TCP侦听套接字将仅绑定到回送接口。可以通过指定一个 bind_address。一个空的 bind_address或地址“ *”指示远程套接字应在所有接口上进行侦听。指定遥控器 bind_address仅在GatewayPorts启用服务器选项的情况下才会成功 (请参阅 sshd_config(5))。

如果 港口参数为' 0,侦听端口将在服务器上动态分配,并在运行时报告给客户端。与-O forward分配的端口一起使用时,将被打印到标准输出。

-S ctl_path
指定用于连接共享的控制套接字的位置,或指定字符串“ none”以禁用连接共享。请参阅ControlPath和 ControlMaster中 的描述ssh_config(5) 有关详细信息。

-s
可用于请求调用远程系统上的子系统。子系统有助于将SSH用作其他应用程序(例如,sftp(1))。子系统被指定为远程命令。

-T
禁用伪终端分配。

-t
强制伪终端分配。这可用于在远程计算机上执行任意基于屏幕的程序,这可能非常有用,例如在实现菜单服务时。-t 即使ssh没有本地tty ,多个选项也会强制tty分配。

-V
显示版本号并退出。

-v
详细模式。导致ssh打印有关其进度的调试消息。这有助于调试连接,身份验证和配置问题。多个 -v选项会增加详细程度。最大值为3。

-W 主办:港口
请求将客户端上的标准输入和输出转发到 主办 上 港口通过安全通道。意味着-N,-T, ExitOnForwardFailure和 ClearAllForwardings,虽然这些可以在配置文件或使用被覆盖-o 的命令行选项。

-w local_tun[:remote_tun]
请求使用指定的隧道设备转发 屯(4) 客户端之间的设备(local_tun)和服务器(remote_tun)。
可以通过使用下一个可用隧道设备的数字ID或关键字“ any”来指定设备。如果 remote_tun未指定,默认为“ any”。另请参见中的Tunnel和 TunnelDevice指令 ssh_config(5)。

如果Tunnel未设置指令,它将设置为默认的隧道模式,即“点对点”。如果需要不同的 Tunnel转发模式,则应在之前指定-w。

-X
启用X11转发。也可以在配置文件中按主机指定。
X11转发应谨慎启用。能够绕过远程主机(针对用户的X授权数据库)上的文件权限的用户可以通过转发的连接访问本地X11显示。然后,攻击者可能能够执行诸如按键监视之类的活动。

因此,默认情况下,X11转发受X11 SECURITY扩展限制。请参阅中的 ssh -Y选项和 ForwardX11Trusted指令 ssh_config(5) 想要查询更多的信息。

-x
禁用X11转发。

-Y
启用受信任的X11转发。受信任的X11转发不受X11 SECURITY扩展控件的约束。

-y
使用发送日志信息 syslog(3)系统模块。默认情况下,此信息发送到stderr。
ssh可以另外从每个用户的配置文件和系统范围的配置文件中获取配置数据。文件格式和配置选项在 ssh_config(5)。

ssh 命令实例:


ssh 连接到远程服务器:

ssh username@remote_host

ssh 使用特定身份(私钥)连接到远程服务器:

ssh -i path/to/key_file username@remote_host

ssh 使用特定端口连接到远程服务器:

ssh username@remote_host -p 2222

ssh 在远程服务器上运行命令:

ssh remote_host command -with -flags

SSH 隧道:动态端口转发(本地主机上的 SOCKS 代理 9999):

ssh -D 9999 -C username@remote_host

SSH 隧道:转发特定端口(localhost:9999slashdot.org:80),同时禁用伪命令分配和远程命令的执行:

ssh -L 9999:slashdot.org:80 -N -T username@remote_host

SSH 跳转:通过跳转主机连接到远程服务器(可以指定多个跳转跳,用逗号分隔):

ssh -J username@jump_host username@remote_host

SSH 代理转发:将身份验证信息转发到远程计算机(有关可用选项,请参见 man ssh_config):

ssh -A username@remote_host

ssh 命令扩展阅读:




ssh 命令评论