名称
sshd的 - OpenSSH SSH守护进程
概要
sshd的 -deiqtD46 -b 位 -F CONFIG_FILE -G login_grace_time -H host_key_file -ķ key_gen_time -Ø 选项 -p 港口 -ü LEN
描述
sshd的 (SSH守护程序)是ssh(1)的守护程序。这些计划一起取代 远程登录 和 RSH,并通过不安全的网络在两个不受信任的主机之间提供安全的加密通信。这些程序旨在尽可能易于安装和使用。
sshd的 是监听来自客户端的连接的守护进程。它通常在从/ etc / rc启动时启动它为每个传入连接分配一个新的守护进程。分叉守护进程处理密钥交换,加密,身份验证,命令执行和数据交换。这个实现sshd的 同时支持SSH协议版本1和2。
SSH协议版本1
每个主机都有一个特定于主机的RSA密钥(通常为1024位),用于标识主机。此外,当守护程序启动时,它会生成服务器RSA密钥(通常为768位)。如果已经使用了此密钥,则通常每小时重新生成一次,并且永远不会存储在磁盘上。
每当客户端连接守护进程时,它都会响应其公共主机和服务器密钥。客户端将RSA主机密钥与其自己的数据库进行比较,以验证它是否未更改。然后,客户端生成256位随机数。它使用主机密钥和服务器密钥加密此随机数,并将加密的数字发送到服务器。然后双方使用该随机数作为会话密钥,用于加密会话中的所有进一步通信。会话的其余部分使用传统密码加密,目前使用Blowfish或3DES,默认情况下使用3DES。客户端选择要使用的加密算法来自服务器提供的算法。
接下来,服务器和客户端进入验证对话框。客户端尝试使用.rhosts身份验证,.rhosts身份验证以及RSA主机身份验证,RSA质询 - 响应身份验证或基于密码的身份验证进行身份验证。
Rhosts身份验证通常被禁用,因为它基本上是不安全的,但如果需要,可以在服务器配置文件中启用。除非,系统安全性没有改善RSHDrlogind的 和rexecd被禁用(因此完全禁用rlogin和rsh进入机器)。
SSH协议版本2
版本2的工作原理类似:每个主机都有一个用于标识主机的主机专用密钥(RSA或DSA)。但是,守护程序启动时,它不会生成服务器密钥。通过Diffie-Hellman密钥协议提供前向安全性。此密钥协议会生成共享会话密钥。
会话的其余部分使用对称密码加密,目前是128位AES,Blowfish,3DES,CAST128,Arcfour,192位AES或256位AES。客户端选择要使用的加密算法来自服务器提供的算法。另外,通过加密消息认证码(hmac-sha1或hmac-md5)提供会话完整性。
协议版本2提供基于公钥的用户(PubkeyAuthentication)或客户端主机(HostbasedAuthentication)身份验证方法,传统密码身份验证和基于质询响应的方法。
命令执行和数据转发
如果客户端成功验证自身,则会输入准备会话的对话框。此时,客户端可以请求诸如分配伪tty,转发X11连接,转发TCP / IP连接或通过安全信道转发认证代理连接之类的事情。
最后,客户端请求shell或执行命令。然后双方进入会话模式。在这种模式下,任何一方都可以随时发送数据,并且这些数据被转发到服务器端的shell或命令,以及客户端的用户终端。
当用户程序终止并且所有转发的X11和其他连接都已关闭时,服务器将命令退出状态发送到客户端,并且双方都退出。
sshd的 可以使用命令行选项或配置文件进行配置。命令行选项会覆盖配置文件中指定的值。
sshd的 收到挂断信号时重新读取其配置文件,SIGHUP 通过以其开头的名称执行自身,即/ usr / sbin / sshd
选项如下:
-b 位
指定临时协议版本1服务器密钥中的位数(默认为768)。
-d
调试模式。服务器将详细的调试输出发送到系统日志,而不是将其自身置于后台。服务器也不起作用,只处理一个连接。此选项仅用于服务器的调试。多个-d选项可提高调试级别。最大值为3。
-e
指定此选项时sshd的 将输出发送到标准错误而不是系统日志。
-F CONFIGURATION_FILE
指定配置文件的名称。默认值为/ etc / ssh / sshd_configsshd的如果没有配置文件,则拒绝启动。
-G login_grace_time
为客户端提供宽限时间以进行身份验证(默认为120秒)。如果客户端在这么多秒内未能对用户进行身份验证,则服务器将断开连接并退出。值为零表示没有限制。
-H host_key_file
指定从中读取主机密钥的文件。必须提供此选项sshd的 不是以root身份运行(因为普通主机密钥文件通常不会被除root之外的任何人读取)。协议版本1的默认值为/ etc / ssh / ssh_host_key,协议版本2的默认值为/ etc / ssh / ssh_host_rsa_key和/ etc / ssh / ssh_host_dsa_key。可以为不同的协议版本和主机密钥提供多个主机密钥文件算法。
-一世
指定sshd的 正在从inetd运行。sshd的 通常不会从inetd运行,因为它需要在响应客户端之前生成服务器密钥,这可能需要几十秒。如果每次都重新生成密钥,客户端将不得不等待太长时间。但是,使用小密钥大小(例如,512)sshd的 来自inetd可能是可行的。
-k key_gen_time
指定重新生成临时协议版本1服务器密钥的频率(默认为3600秒或一小时)。相当频繁地重新生成密钥的动机是密钥不存储在任何地方,并且在大约一个小时之后,即使机器被破解或被物理占用,也不可能恢复用于解密截取的通信的密钥。值为零表示永远不会重新生成密钥。
-o 选项
可用于以配置文件中使用的格式提供选项。这对于指定没有单独命令行标志的选项很有用。
-p 港口
指定服务器侦听连接的端口(默认值为22)。允许多个端口选项。指定命令行端口时,将忽略配置文件中指定的端口。
-q
静音模式。没有任何内容发送到系统日志。通常会记录每个连接的开始,身份验证和终止。
-t
测试模式。仅检查配置文件的有效性和密钥的完整性。这对更新很有用sshd的 可靠的配置选项可能会改变。
-u LEN
此选项用于指定字段的大小utmp文件 保存远程主机名的结构。如果解析的主机名长于 LEN 将使用点分十进制值。这允许溢出此字段的具有很长主机名的主机仍然是唯一标识的。指定 - U0 表示只应将点分十进制地址放入utmp文件中。 - U0 也被用来预防sshd的 从发出DNS请求,除非认证机制或配置需要它。可能需要DNS的身份验证机制包括Rhosts验证RhostsRSA验证 Hostbase验证 并使用从=模式列表密钥文件中的选项。需要DNS的配置选项包括使用USER @ HOSTpattern的AllowUsers 要么DenyUsers
-D
指定此选项时sshd的 不会分离,也不会成为守护进程。这样可以轻松监控sshd的
-4
军队sshd的 仅使用IPv4地址。
-6
军队sshd的 仅使用IPv6地址。
配置文件
sshd的 从/ etc / ssh / sshd_config(或用 - 指定的文件)读取配置数据F 在命令行上)。 sshd_config5中描述了文件格式和配置选项。
登录过程
用户成功登录后,sshd的 执行以下操作:
- 如果登录是在tty上,并且没有指定命令,则打印上次登录时间和/ etc / motd(除非在配置文件或$ HOME / .hushlogin中禁止,请参阅Sx FILES部分)。
- 如果登录是在tty上,则记录登录时间。
- 检查/ etc / nologin是否存在,打印内容并退出(除非root)。
- 使用普通用户权限运行的更改。
- 设置基本环境。
- 读取$ HOME / .ssh / environment(如果存在)并允许用户更改其环境。见的PermitUserEnvironment sshd_config5中的选项。
- 更改用户的主目录。
- 如果$ HOME / .ssh / rc存在,则运行它;否则如果/ etc / ssh / sshrc存在,则运行它;否则运行xauth。 ``rc''文件在标准输入中被赋予X11认证协议和cookie。
- 运行用户的shell或命令。
Authorized_Keys文件格式
$ HOME / .ssh / authorized_keys是默认文件,列出协议版本1中允许进行RSA身份验证的公钥和协议版本2中的公钥身份验证(PubkeyAuthentication)。AuthorizedKeysFile 可用于指定替代文件。
文件的每一行都包含一个键(空行和以“#”开头的行被忽略为注释)。每个RSA公钥由以下字段组成,用空格分隔:选项,位,指数,模数,注释。每个协议版本2公钥包括:options,keytype,base64编码密钥,注释。选项字段是可选的;它的存在取决于该行是否以数字开头(选项字段从不以数字开头)。位,指数,模数和注释字段为协议版本1提供RSA密钥;注释字段不用于任何内容(但可以方便用户识别密钥)。对于协议版本2,keytype是``ssh-dss''或``ssh-rsa''
请注意,此文件中的行通常为几百字节长(因为公钥编码的大小)。你不想输入它们;相反,复制identity.pub id_dsa.pub或id_rsa.pub文件并进行编辑。
sshd的 对协议1和协议2密钥强制执行768位的最小RSA密钥模数大小。
选项(如果存在)由逗号分隔的选项规范组成。除双引号外,不允许使用空格。支持以下选项规范(请注意,选项关键字不区分大小写):
从=模式列表
指定除了公钥认证之外,远程主机的规范名称必须出现在以逗号分隔的模式列表中(`*'和`?'作为通配符)。该列表还可能包含通过在前缀“!”之前取消的模式。 ;如果规范主机名与否定模式匹配,则不接受该密钥。此选项的目的是可选地提高安全性:公钥验证本身不信任网络或名称服务器或任何东西(但密钥);但是,如果有人以某种方式窃取密钥,密钥允许入侵者从世界任何地方登录。这个附加选项使得使用被盗密钥变得更加困难(除了密钥之外,名称服务器和/或路由器也必须被泄露)。
命令=命令
指定只要此密钥用于身份验证,就会执行该命令。用户提供的命令(如果有)将被忽略。如果客户端请求pty,则命令在pty上运行;否则它没有tty运行。如果需要8位干净通道,则不得请求pty或指定无终端 引用可以通过引用反斜杠来包含在命令中。此选项可能有助于限制某些公钥仅执行特定操作。一个示例可能是允许远程备份但不允许其他任何内容的密钥。请注意,除非明确禁止,否则客户端可以指定TCP / IP和/或X11转发。请注意,此选项适用于shell,命令或子系统执行。
环境= NAME =值
指定使用此密钥登录时要将字符串添加到环境中。以这种方式设置的环境变量覆盖其他默认环境值。允许使用此类型的多个选项。默认情况下禁用环境处理,并通过的PermitUserEnvironment 选项。如果,则自动禁用此选项了UseLogin 已启用。
无端口转发
当此密钥用于身份验证时,禁止TCP / IP转发。客户端的任何端口转发请求都将返回错误。这可以用于例如与之相关的命令 选项。
没有X11转发
当此密钥用于身份验证时,禁止X11转发。客户端的任何X11转发请求都将返回错误。
无代理转发
当此密钥用于身份验证时,禁止身份验证代理转发。
无终端
防止tty分配(分配pty的请求将失败)。
permitopen =主机:端口
限制本地``ssh -L'' 端口转发,使其只能连接到指定的主机和端口。可以使用替代语法指定IPv6地址: 主机/端口 多 permitopen 选项可以用逗号分隔。不对指定的主机名执行模式匹配,它们必须是文字域或地址。
例子
1024 33 12121 … 312314325 [email protected]
from =“*。niksula.hut.fi,!pc.niksula.hut.fi”1024 35 23 … 2334 ylo @ niksula
command =“dump / home”,no-pty,no-port-forwarding 1024 33 23 … 2323 backup.hut.fi
permitopen =“10.2.1.55:80”,permitopen =“10.2.1.56:25”1024 33 23 … 2323
Ssh_Known_Hosts文件格式
/ etc / ssh / ssh_known_hosts和$ HOME / .ssh / known_hosts文件包含所有已知主机的主机公钥。全局文件应由管理员准备(可选),并自动维护每用户文件:每当用户从未知主机连接时,其密钥将添加到每用户文件中。
这些文件中的每一行都包含以下字段:主机名,位,指数,模数,注释。字段由空格分隔。
主机名是以逗号分隔的模式列表('*'和'?'充当通配符);反过来,每个模式与规范主机名(在验证客户端时)或用户提供的名称(验证服务器时)相匹配。一个模式也可能以“!”开头。表示否定:如果主机名与否定模式匹配,即使它与该行上的另一个模式匹配,也不接受(通过该行)。
比特,指数和模数直接取自RSA主机密钥;它们可以从例如/etc/ssh/ssh_host_key.pub获得。可选的注释字段继续到行的末尾,并且不被使用。
以“#”开头的行和空行将被忽略为注释。
执行主机身份验证时,如果任何匹配行具有正确的密钥,则接受身份验证。因此允许(但不推荐)具有相同名称的多个行或不同的主机键。当来自不同域的短形式的主机名放入文件中时,这将不可避免地发生。文件可能包含冲突的信息;如果可以从任一文件中找到有效信息,则接受验证。
请注意,这些文件中的行通常长达数百个字符,您绝对不希望手动键入主机键。而是通过脚本或/etc/ssh/ssh_host_key.pub生成它们并在前面添加主机名。
例子
closenet,…,130.233.208.41 1024 37 159 … 93 closenet.hut.fi cvs.openbsd.org,199.185.137.3 ssh-rsa AAAA1234 ….. =
也可以看看
scp(1),sftp(1),ssh(1),ssh-add1,ssh-agent1,ssh-keygen1,login.conf5,moduli(5),sshd_config5,sftp-server8
T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen “SSH协议架构” draft-ietf-secsh-architecture-12.txt 2002年1月正在进行的工作材料
M. Friedl N. Provos W. A. Simpson “用于SSH传输层协议的Diffie-Hellman组交换” draft-ietf-secsh-dh-group-exchange-02.txt 2002年1月正在进行的工作材料
重要: 使用 人 命令( % 人 )查看特定计算机上如何使用命令。