Slogin 命令是什么?2025年3月17日 | 阅读 12 分钟 在类 Unix 操作系统上,slogin 命令也被称为 ssh 客户端,用于安全地连接到远程 shell。  描述SSH 客户端是一个用于连接到远程计算机并执行命令的程序。它旨在取代 rlogin 和 rsh,并在不安全的网络上两个不受信任的主机之间提供安全的加密通信。此外,安全通道还可用于转发任意 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
它请求压缩所有数据,包括来自转发的 X11 和 TCP/IP 连接的数据,以及 stdin、stdout 和 stderr。协议版本 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 服务器运行,并支持 SOCKS4 和 SOCKS5 协议。只有 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、-T 和 ClearAllForwardings。它仅与协议版本 2兼容。 - -w local_tun[:remote_tun]
它请求使用指定的 tun 设备在客户端(local_tun)和服务器(remote_tun)之间进行隧道设备转发。 设备可以由数值 ID 或关键字"any" 提供,后者使用下一个可访问的隧道设备。如果未提供 remote_tun,则默认值为"any"。此外,还可以查看 ssh_config 中关于 Tunnel 和 TunnelDevice 的指令。如果未指定 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、CAST128 或 Arcfour 加密)和完整性(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、ECDSA 或 RSA 算法中的一种,ssh 会自动实现公钥身份验证协议。虽然协议 2 允许使用任何密钥,但协议 1 仅限于使用 RSA 密钥。 可用于登录的公钥列在文件 /.ssh/authorized_keys 中。当用户登录时,ssh 程序指示服务器使用特定的密钥对,并在使用匹配的公钥之前验证其有效性。 质询-响应 服务器发送一个随机的“挑战”字符串以接收响应。与仅限于一个挑战和一个响应的协议 1 不同,过程 2 允许进行多次挑战和响应。一些非 OpenBSD 系统使用质询-响应身份验证,如 PAM 和 BSD Authentication(参见 login.conf)。 密码 如果所有其他身份验证方法都失败,ssh 将最后手段询问用户密码。虽然密码被转发到远程主机进行验证,但由于所有通信都已加密,因此窃听网络的人无法看到它。 TCP 转发可以在命令行或配置文件中指定通过安全通道转发任意 TCP 连接。连接到邮件服务器的安全连接是 TCP 转发的一个潜在用途,还可以用于绕过防火墙。 X11 转发如果 ForwardX11 参数设置为"yes"(或参见-X、-x 和 -Y 选项的解释),并且用户使用 X11(DISPLAY 环境变量已设置),则连接到 X11 显示将立即转发到另一侧,以便从shell(或命令)启动的任何 X11 程序都通过安全通道进行。本地计算机将建立到实际 X 服务器的连接。用户不应手动更改 DISPLAY。可以在命令行或配置文件中设置 X11 连接的转发。 使用身份验证代理时,如果 ForwardAgent 变量设置为"yes",并且用户正在使用身份验证代理,则到代理的连接会自动传输到远程端。
|