Slogin 命令是什么?

2025年3月17日 | 阅读 12 分钟

类 Unix 操作系统上,slogin 命令也被称为 ssh 客户端,用于安全地连接到远程 shell。

What is Slogin command

描述

SSH 客户端是一个用于连接到远程计算机并执行命令的程序。它旨在取代 rloginrsh,并在不安全的网络上两个不受信任的主机之间提供安全的加密通信。此外,安全通道还可用于转发任意 TCP 端口X11 会话

使用 ssh 连接到提供的主机名登录(可选用户名)。根据协议版本,用户必须使用几种方法之一来向远程系统证明其身份。

如果提供了命令,则在远程主机上执行该命令,而不是使用登录 shell。

语法

ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]

[-D [bind_address:]port] [-e escape_char] [-F configfile]

[-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport]

[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]

[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]

[-w local_tun[:remote_tun]] [user@]hostname [command]

语法中有许多选项。这些选项可以描述如下

  • -1:
    它强制 ssh 只尝试协议版本 1
  • -2:
    它强制 ssh 只尝试协议版本 2
  • -4:
    它强制 ssh 默认只使用IPv4 地址
  • -6:
    它强制 ssh 默认只使用IPv6 地址
  • -A
    它允许身份验证代理连接被转发。在配置文件中,它也可以为主机单独定义。
    代理转发需要小心启用。能够绕过远程主机上文件权限的用户(用于代理的 Unix 域套接字)可以通过转发的连接连接到本地代理。攻击者无法从代理中获取密钥材料,但他们可以操纵密钥,从而使用已加载到代理中的身份进行身份验证。
  • -a
    它阻止发送身份验证代理的连接。
  • -b bind_address
    bind_address 用作连接的源地址。在拥有多个地址的系统上非常有用。
  • -C
    它请求压缩所有数据,包括来自转发的 X11TCP/IP 连接的数据,以及 stdin、stdoutstderr协议版本 1 的压缩级别选项允许调整“level”,并且压缩技术与 gzip 使用的技术相同。在调制解调器线路和其他慢速连接上,压缩很有用,但在快速网络上只会减慢活动速度。在配置文件中,默认值可以逐主机更改。
  • -c cipher_spec
    它选择用于加密会话的密码。支持的值为 Des、3des 和 blowfish。
    默认情况下,它使用 3des。在撰写本文时,它是一种相当安全的密码。在称为 3des三重 DES 算法中使用了三个不同的密钥。一种称为 blowfish 的快速分组密码比 3des 快得多,并且看起来非常安全。为了与不支持 3des 密码的旧协议 1 实现兼容,ssh 客户端仅支持 des 密码。由于其加密缺陷,强烈禁止使用。
  • -D [bind_address:]port
    它提供了本地“动态”应用程序级端口转发的指令。如果需要,在本地端分配并绑定一个套接字到指定的bind_address。每次连接到此端口时,连接都将通过安全通道路由,然后使用应用程序协议来决定连接应从哪个计算机建立。目前,ssh 将作为 SOCKS 服务器运行,并支持 SOCKS4SOCKS5 协议。只有 root 用户可以转发特权端口。配置文件也允许指定动态端口转发。
    您可以通过将IPv6 地址括在方括号中来指定它们。只有超级用户 (root) 才能转发特权端口。默认情况下,本地端口根据 GatewayPorts 配置进行绑定。但是,可以使用显式的bind_address 将连接绑定到特定地址。空地址或 bind_address 字段中的 '*' 表示端口应从所有接口访问,而 "localhost" 值表示端口仅用于本地使用。
  • -e escape_char
    它为 pty 会话设置转义字符(默认为 "~")。转义字符仅在行首识别。通过发送转义字符后跟一个点 ('.') 来关闭连接,通过发送转义字符后跟 control-Z 来暂停连接,并且仅通过发送转义字符本身来传输转义字符。会话是完全透明的,并且当字符设置为"none" 时,所有转义都将被禁用
  • -F config file
    它被定义为不同的每个用户的配置文件。如果在命令行上指定了配置文件,则不会使用系统配置文件 (/etc/ssh/ssh_config)。每个用户的配置文件默认位置是 $HOME/.ssh/config
  • -f
    在执行命令之前,让 ssh 进入后台。如果用户希望 ssh 在后台询问密码密码短语但又不想实际询问,这会很有帮助。这意味着 -n。建议使用 ssh -f host Xterm 命令从远程位置启动 X11 程序。
  • -g
    它允许从远程主机连接到本地转发的端口。
  • -I smartcard_device
    它定义要使用的智能卡设备。概念是 ssh 应该使用存储用户私有 RSA 密钥的智能卡进行连接。
  • -i identity_file
    它选择一个文件来读取私钥标识(identity)用于公钥身份验证。配置文件还可以包含关于身份文件的每个主机信息。可能存在多个 -i 选项(以及配置文件中定义的其他标识)。此外,ssh 会尝试从以 "-cert.pub" 扩展名命名的文件中加载证书数据,并将其添加到身份文件名中。
  • -K
    它允许将 GSSAPI 凭据转发(委托)到服务器以及基于 GSSAPI 的身份验证。
  • -k
    它阻止将 GSSAPI 凭据转发(委托)到服务器。
  • -L [bind_address:] port:host:hostport
    它指定远程端的主机端口将通过指定端口从本地(客户端)主机路由。会本地监听端口分配一个套接字,并可能绑定到提供的bind_address。每次连接到此端口时,连接都将通过安全通道路由,并从远程计算机建立到hostport 的连接。在配置文件中,也可以配置端口转发。通过将地址括在方括号中,可以提供IPv6 地址。唯一拥有此权限的是超级用户。默认情况下,本地端口根据 GatewayPorts 配置进行绑定。您可以使用显式的bind_address 将连接绑定到特定地址。"localhost" 值表示监听端口仅用于本地使用,而空地址或 '*' 表示端口应从所有接口访问。
  • -l login_name
    它定义了登录到远程计算机的用户。它也可以在配置文件中按主机单独定义。
  • -M
    它用于将 ssh 客户端置于连接共享的“主”模式。多个 -M 选项强制 ssh 进入“主”模式,在接受辅助连接之前需要确认。
  • -m mac_spec
    可以按逗号分隔的列表指定协议版本 2 的MAC(消息认证码)算法,并按首选顺序排列。
  • -N
    它从不执行远程命令。它仅对协议版本 2 端口转发有用。
  • -n
    它将 stdin 重定向到 /dev/null(实际上,它阻止从 stdin 读取)。在 ssh后台运行时应使用它。这是在远程系统上运行 X11 应用程序的典型方法。例如,如果您使用命令 ssh -n shadows.cs.hut.fi emacs & 在 shadows.cs.hut.fi 上启动一个 emacs 程序X11 连接将通过安全通道发送。将创建一个 ssh 的后台进程。当 ssh 需要请求密码或密码短语时,它不起作用。
  • -O ctl_cmd
    它控制活动的连接多路复用的主进程。当提供 -O 选项时,ctl_cmd 参数将被处理并传递给主进程。以下是可接受的命令:"check" 命令用于查看主进程是否活动"forward" 用于请求转发而不执行指令"cancel" 用于停止转发"exit" 用于请求主进程退出"stop" 用于请求主进程停止接受新的多路复用请求。
  • -o option
    当没有特定的命令行标志来表示某个选项时,指定它很有用。
  • -p port
    Port 用于连接到远程主机。它可以在配置文件中按主机单独定义。
  • -q
    它用于安静模式。抑制所有警告和诊断信号。不再显示错误。即使是致命错误,如果提供了第二个 -q,也会被静默。
  • -R [bind_address:] port:host:hostport
    它声明远程主机指定的端口应转发到本地主机指定的主机端口。当连接到远程端的端口时,连接将通过安全通道传输,并从本地系统连接到hostport。为了实现这一点,会指定一个套接字监听远程端的端口。
    配置文件中,也可以配置端口转发。只有当在远程工作站上以root 用户身份登录时,才能路由特权端口。通过将地址括在方括号中,可以提供IPv6 地址
    默认情况下,服务器上的监听套接字将始终限制回送接口。可以通过提供 bind_address 来覆盖此设置。地址 '*' 或空的 bind_address 表示远程套接字需要设置为监听所有接口。只有当服务器的 GatewayPorts 选项sshd_config 中启用时,指定远程 bind_address 才能起作用。
    如果 port 参数设置为'0',则 监听端口将在服务器上动态创建并在运行时报告给客户端。当与 -O forward 结合使用时,将把分配的端口打印到标准输出。
  • -S ctl_path
    它定义了用于连接共享的控制套接字的位置,或者字符串"none" 来关闭连接共享。
  • -s
    它可用于请求远程系统调用一个子系统SSH2 协议的一个功能,称为子系统,使得将 SSH 用作其他程序(如 sftp)的安全传输更加容易。子系统被提及为远程命令
  • -T
    它无法分配伪终端
  • -t
    它强制分配伪终端。它能够远程运行任何基于屏幕的程序,这对于建立菜单服务非常有帮助。即使 ssh 没有本地 tty,多个 -t 选项也会强制分配 tty
  • -V
    它显示版本号然后退出。
  • -v
    它定义了详细模式。因此,ssh 会打印有关其进度的调试消息。此功能有助于调试连接、身份验证配置问题。额外的 -v 参数会增加详细程度。最多为 3。
  • -W host:port
    它请求使用安全通道客户端的标准输入输出转发到主机上的端口。它隐含了 ExitOnForwardFailure、-N、-TClearAllForwardings。它仅与协议版本 2兼容
  • -w local_tun[:remote_tun]
    它请求使用指定的 tun 设备在客户端(local_tun)服务器(remote_tun)之间进行隧道设备转发
    设备可以由数值 ID 或关键字"any" 提供,后者使用下一个可访问的隧道设备。如果未提供 remote_tun,则默认值为"any"。此外,还可以查看 ssh_config 中关于 TunnelTunnelDevice 的指令。如果未指定 Tunnel 指令,则默认使用“点对点”隧道模式。
  • -X
    它允许X11 转发。它也可以在配置文件中按主机单独提供。
    X11 转发需要小心启用。如果用户能够绕过远程主机上的文件权限(用于用户的X 授权数据库),则可以通过转发的连接访问本地 X11 显示。之后,攻击者可能能够执行诸如键盘记录之类的操作。
    因此,X11 转发默认受到 X11 SECURITY 扩展限制。
  • -x
    X11 转发禁用
  • -Y
    启用受信任的 X11 转发受信任的 X11 转发不受 X11 SECURITY 扩展的控制。
  • -y
    使用 syslog 系统模块发送日志信息。这些信息通常发送到 stderr。

认证

OpenSSH SSH 客户端支持 SSH 协议 1 和 2。ssh_config 的 Protocol 选项,以及 -1-2 选项(见上文),允许您覆盖默认设置(仅使用协议 2)以使用协议 2协议 2 是默认协议,它提供了额外的机密性(流量使用 AES、3DES、Blowfish、CAST128Arcfour 加密)和完整性(hmac-md5、hmac-sha1、hmac-sha2-256、hmac-sha2-512、umac-64 和 hmac-ripemd160)机制。两个协议都支持类似的身份验证方法。协议 1 缺乏确保连接完整性的可靠方法。

可用于身份验证的方法是

  • 基于 GSSAPI 的
  • 基于主机的
  • 公钥
  • 质询-响应
  • 密码

尽管协议 2 提供了一个名为 PreferredAuthentications 的配置选项,允许它改变默认顺序,但身份验证方法按照上述顺序进行测试。

基于主机的

如果在系统上使用用户登录 /etc/hosts.equiv 或在远程系统上使用 /etc/ssh/shosts.equiv,如果双方的用户名匹配,则该用户将被考虑登录。

为了授权登录,服务器必须能够验证客户端的主机密钥。此身份验证过程解决了由DNS、IP路由欺骗引起的安全漏洞。

公钥

该技术基于公钥加密,并使用密码系统,其中加密解密使用不同的密钥执行,使得无法从加密密钥推导出解密密钥。每个用户都应生成一个公钥/私钥对进行身份验证。只有用户知道私钥;服务器只知道公钥。使用 DSA、ECDSARSA 算法中的一种,ssh 会自动实现公钥身份验证协议。虽然协议 2 允许使用任何密钥,但协议 1 仅限于使用 RSA 密钥

可用于登录的公钥列在文件 /.ssh/authorized_keys 中。当用户登录时,ssh 程序指示服务器使用特定的密钥对,并在使用匹配的公钥之前验证其有效性。

质询-响应

服务器发送一个随机的“挑战”字符串以接收响应。与仅限于一个挑战和一个响应协议 1 不同,过程 2 允许进行多次挑战和响应。一些非 OpenBSD 系统使用质询-响应身份验证,如 PAMBSD Authentication(参见 login.conf)。

密码

如果所有其他身份验证方法都失败,ssh 将最后手段询问用户密码。虽然密码被转发到远程主机进行验证,但由于所有通信都已加密,因此窃听网络的人无法看到它。

TCP 转发

可以在命令行配置文件中指定通过安全通道转发任意 TCP 连接。连接到邮件服务器的安全连接是 TCP 转发的一个潜在用途,还可以用于绕过防火墙。

X11 转发

如果 ForwardX11 参数设置为"yes"(或参见-X、-x-Y 选项的解释),并且用户使用 X11DISPLAY 环境变量已设置),则连接到 X11 显示将立即转发到另一侧,以便从shell(或命令)启动的任何 X11 程序都通过安全通道进行。本地计算机将建立到实际 X 服务器的连接。用户不应手动更改 DISPLAY。可以在命令行或配置文件中设置 X11 连接的转发。

使用身份验证代理时,如果 ForwardAgent 变量设置为"yes",并且用户正在使用身份验证代理,则到代理的连接会自动传输到远程端。