openssh linux,openssh官网下载

大家好,关于openssh linux很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于openssh官网下载的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

Linux系统下OpenSSH的安装及基本配置文件详解

远程安装调试SSH特别注意,OpenSSH卸载后,可能导致凡使用SSH协议连接服务器的工具都无法登陆,比如WINSCP、PUTTY等,如果你正使用远程桌面,最好先开启TELNET并确保开机启动(或其它可替代的远程管理工具也可以),客户端可以正常连接后才可动手更新SSH,否则一旦SSH启动失败,就只能找机房了。

一、卸载原来SSH

默认SSH会安装为服务,且开机启动,所以要先把服务停止(本文环境RedHat5.4):

复制代码代码如下:

service sshd stop

这时,建议备份一下/etc/init.d/sshd这个启动文件,因为下文编译安装OpenSSH后,没这个启动文件,尽管实际修改使用也不是太方便,除非你下文的安装目录跟原来的一样的。

复制代码代码如下:

mv/etc/init.d/sshd/etc/init.d/sshd.old

卸载软件包:

复制代码代码如下:

rmp-qa|grep openssh*

把输出列表中的SSH软件包都卸载掉。卸载方法请参考:

二、下载并安装新的OPENSSH

复制代码代码如下:

cd/tmp

wget

tar xzvf openssh-5.9p1.tar.gz

cd openssh-5.9p1

./configure--prefix=/usr/local/openssh--sysconfdir=/etc/ssh--with-pam--with-ssl-dir=/usr/local/openssl--with-md5-passwords--mandir=/usr/share/man--with-zlib=/usr/local/zlib2

make&& make install

这里需要注意,上面的./configure配置,天缘的默认路径如下:

复制代码代码如下:

openssl->/usr/local/openssl

zlib->/usr/local/zlib2

确认这些路径跟你的系统对应。不同则需手动修改掉。此外还有些参数,比如:

复制代码代码如下:

--bindir=/usr/bin--sbindir=/usr/sbin

可根据需要设定。

三、查询SSH版本

复制代码代码如下:

[root@localhost]# ssh-V

OpenSSH_5.9p1, OpenSSL 1.0.1 14 Mar 2012

四、设为服务开机运行

1、简单的开机启动设置方法

由于是自编译安装的OpenSSH,没有sshd这个启动文件,所以直接使用传统的启动方式,直接修改rc.local。打开/etc/rc.local,添加:

复制代码代码如下:/usr/sbin/sshd

即可设置为开机启动。

2、爱折腾设置开机方法

使用chkconfig设置结合上文备份的sshd文件设为开机启动有点麻烦,首先还原/etc/init.d/sshd:

复制代码代码如下:

mv/etc/init.d/sshd.old/etc/init.d/sshd

再打开/etc/init.d/sshd文件(原装的sshd启动配置文件大概有4K多,主要确认顶部几个路径是否正确即可),天缘大概整理一下,主要如下几个(可能不一定完整,下次实际确认一下再补充完善):

复制代码代码如下:

...

# source function library

./etc/rc.d/init.d/functions

# pull in sysconfig settings

[-f/etc/sysconfig/sshd ]&&./etc/sysconfig/sshd

RETVAL=0

prog="sshd"

lockfile=/var/lock/subsys/$prog

# Some functions to make the below more readable

KEYGEN=/usr/bin/ssh-keygen

SSHD=/usr/sbin/sshd

RSA1_KEY=/etc/ssh/ssh_host_key

RSA_KEY=/etc/ssh/ssh_host_rsa_key

DSA_KEY=/etc/ssh/ssh_host_dsa_key

PID_FILE=/var/run/sshd.pid

...

确认这些并修改这些路径后保存。

使用chkconfig添加为服务:

复制代码代码如下:

chkconfig–add sshd

chkconfig–level 2345 sshd on

这样就设置完成了。

五、重启电脑或服务

启动SSH:

复制代码代码如下:

service sshd start

停止SSH:

复制代码代码如下:

service sshd stop

六、OpenSSH配置文件详解

AcceptEnv

指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有SSH-2协议支持环境变量的传递。

细节可以参考 ssh_config中的 SendEnv配置指令。

指令的值是空格分隔的变量名列表(其中可以使用’*’和’?’作为通配符)。也可以使用多个 AcceptEnv达到同样的目的。

需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用。

默认是不传递任何环境变量。

AddressFamily

指定 sshd应当使用哪种地址族。取值范围是:”any”(默认)、”inet”(仅IPv4)、”inet6″(仅IPv6)。

AllowGroups

这个指令后面跟着一串用空格分隔的组名列表(其中可以使用”*”和”?”通配符)。默认允许所有组登录。

如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。

这里的”组”是指”主组”(primary group),也就是/etc/passwd文件中指定的组。

这里只允许使用组的名字而不允许使用GID。相关的 allow/deny指令按照下列顺序处理:

DenyUsers, AllowUsers, DenyGroups, AllowGroups

AllowTcpForwarding

是否允许TCP转发,默认值为”yes”。

禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器。

AllowUsers

这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用”*”和”?”通配符)。默认允许所有用户登录。

如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。

如果指定了 USER@HOST模式的用户,那么 USER和 HOST将同时被检查。

这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny指令按照下列顺序处理:

DenyUsers, AllowUsers, DenyGroups, AllowGroups

AuthorizedKeysFile

存放该用户可以用来登录的 RSA/DSA公钥。

该指令中可以使用下列根据连接时的实际情况进行展开的符号:

%%表示’%’、%h表示用户的主目录、%u表示该用户的用户名。

经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。

默认值是”.ssh/authorized_keys”。

Banner

将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。

这个特性仅能用于SSH-2,默认什么内容也不显示。”none”表示禁用这个特性。

ChallengeResponseAuthentication

是否允许质疑-应答(challenge-response)认证。默认值是”yes”。

所有 login.conf中允许的认证方式都被支持。

Ciphers

指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:

“aes128-cbc”,“aes192-cbc”,“aes256-cbc”,“aes128-ctr”,“aes192-ctr”,“aes256-ctr”,

“3des-cbc”,“arcfour128″,“arcfour256″,“arcfour”,“blowfish-cbc”,“cast128-cbc”

默认值是可以使用上述所有算法。

ClientAliveCountMax

sshd在未收到任何客户端回应前最多允许发送多少个”alive”消息。默认值是 3。

到达这个上限后,sshd将强制断开连接、关闭会话。

需要注意的是,”alive”消息与 TCPKeepAlive有很大差异。

“alive”消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive却是可以被欺骗的。

如果 ClientAliveInterval被设为 15并且将 ClientAliveCountMax保持为默认值,

那么无应答的客户端大约会在45秒后被强制断开。这个指令仅可以用于SSH-2协议。

ClientAliveInterval

设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,

sshd将通过安全通道向客户端发送一个”alive”消息,并等候应答。

默认值 0表示不发送”alive”消息。这个选项仅对SSH-2有效。

Compression

是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密。

可用值:”yes”,“delayed”(默认),“no”。

DenyGroups

这个指令后面跟着一串用空格分隔的组名列表(其中可以使用”*”和”?”通配符)。默认允许所有组登录。

如果使用了这个指令,那么这些组中的成员将被拒绝登录。

这里的”组”是指”主组”(primary group),也就是/etc/passwd文件中指定的组。

这里只允许使用组的名字而不允许使用GID。相关的 allow/deny指令按照下列顺序处理:

DenyUsers, AllowUsers, DenyGroups, AllowGroups

DenyUsers

这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用”*”和”?”通配符)。默认允许所有用户登录。

如果使用了这个指令,那么这些用户将被拒绝登录。

如果指定了 USER@HOST模式的用户,那么 USER和 HOST将同时被检查。

这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny指令按照下列顺序处理:

DenyUsers, AllowUsers, DenyGroups, AllowGroups

ForceCommand

强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell-c)。

这可以应用于 shell、命令、子系统的完成,通常用于 Match块中。

这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND环境变量来支持的。

GatewayPorts

是否允许远程主机连接本地的转发端口。默认值是”no”。

sshd默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。

GatewayPorts指令可以让 sshd将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。

“no”表示仅允许本地连接,”yes”表示强制将远程端口转发绑定到统配地址(wildcard address),

“clientspecified”表示允许客户端选择将远程端口转发绑定到哪个地址。

GSSAPIAuthentication

是否允许使用基于 GSSAPI的用户认证。默认值为”no”。仅用于SSH-2。

GSSAPICleanupCredentials

是否在用户退出登录后自动销毁用户凭证缓存。默认值是”yes”。仅用于SSH-2。

HostbasedAuthentication

这个指令与 RhostsRSAAuthentication类似,但是仅可以用于SSH-2。推荐使用默认值”no”。

推荐使用默认值”no”禁止这种不安全的认证方式。

HostbasedUsesNameFromPacketOnly

在开启 HostbasedAuthentication的情况下,

指定服务器在使用~/.shosts~/.rhosts/etc/hosts.equiv进行远程主机名匹配时,是否进行反向域名查询。

“yes”表示 sshd信任客户端提供的主机名而不进行反向查询。默认值是”no”。

HostKey

主机私钥文件的位置。如果权限不对,sshd可能会拒绝启动。

SSH-1默认是/etc/ssh/ssh_host_key。

SSH-2默认是/etc/ssh/ssh_host_rsa_key和/etc/ssh/ssh_host_dsa_key。

一台主机可以拥有多个不同的私钥。”rsa1″仅用于SSH-1,”dsa”和”rsa”仅用于SSH-2。

IgnoreRhosts

是否在 RhostsRSAAuthentication或 HostbasedAuthentication过程中忽略.rhosts和.shosts文件。

不过/etc/hosts.equiv和/etc/shosts.equiv仍将被使用。推荐设为默认值”yes”。

IgnoreUserKnownHosts

是否在 RhostsRSAAuthentication或 HostbasedAuthentication过程中忽略用户的~/.ssh/known_hosts文件。

默认值是”no”。为了提高安全性,可以设为”yes”。

KerberosAuthentication

是否要求用户为 PasswordAuthentication提供的密码必须通过 Kerberos KDC认证,也就是是否使用Kerberos认证。

要使用Kerberos认证,服务器需要一个可以校验 KDC identity的 Kerberos servtab。默认值是”no”。

KerberosGetAFSToken

如果使用了 AFS并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,

将会在访问用户的家目录前尝试获取一个 AFS token。默认为”no”。

KerberosOrLocalPasswd

如果 Kerberos密码认证失败,那么该密码还将要通过其它的认证机制(比如/etc/passwd)。

默认值为”yes”。

KerberosTicketCleanup

是否在用户退出登录后自动销毁用户的 ticket。默认值是”yes”。

KeyRegenerationInterval

在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。

这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。

设为 0表示永不重新生成,默认为 3600(秒)。

ListenAddress

指定 sshd监听的网络地址,默认监听所有地址。可以使用下面的格式:

ListenAddress host|IPv4_addr|IPv6_addr

ListenAddress host|IPv4_addr:port

ListenAddress [host|IPv6_addr]:port

如果未指定 port,那么将使用 Port指令的值。

可以使用多个 ListenAddress指令监听多个地址。

LoginGraceTime

限制用户必须在指定的时限内认证成功,0表示无限制。默认值是 120秒。

LogLevel

指定 sshd的日志等级(详细程度)。可用值如下:

QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3

DEBUG与 DEBUG1等价;DEBUG2和 DEBUG3则分别指定了更详细、更罗嗦的日志输出。

比 DEBUG更详细的日志可能会泄漏用户的敏感信息,因此反对使用。

MACs

指定允许在SSH-2中使用哪些消息摘要算法来进行数据校验。

可以使用逗号分隔的列表来指定允许使用多个算法。默认值(包含所有可以使用的算法)是:

hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96

Match

引入一个条件块。块的结尾标志是另一个 Match指令或者文件结尾。

如果 Match行上指定的条件都满足,那么随后的指令将覆盖全局配置中的指令。

Match的值是一个或多个”条件-模式”对。可用的”条件”是:User, Group, Host, Address。

只有下列指令可以在 Match块中使用:AllowTcpForwarding, Banner,

ForceCommand, GatewayPorts, GSSApiAuthentication,

KbdInteractiveAuthentication, KerberosAuthentication,

PasswordAuthentication, PermitOpen, PermitRootLogin,

RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,

X11Forwarding, X11UseLocalHost

MaxAuthTries

指定每个连接最大允许的认证次数。默认值是 6。

如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。

MaxStartups

最大允许保持多少个未认证的连接。默认值是 10。

到达限制后,将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime的限制。

PasswordAuthentication

是否允许使用基于密码的认证。默认为”yes”。

PermitEmptyPasswords

是否允许密码为空的用户远程登录。默认为”no”。

PermitOpen

指定TCP端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所有转发请求。

合法的指令格式如下:

PermitOpen host:port

PermitOpen IPv4_addr:port

PermitOpen [IPv6_addr]:port

“any”可以用于移除所有限制并允许一切转发请求。

PermitRootLogin

是否允许 root登录。可用值如下:

“yes”(默认)表示允许。”no”表示禁止。

“without-password”表示禁止使用密码认证登录。

“forced-commands-only”表示只有在指定了 command选项的情况下才允许使用公钥认证登录。

同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情。

PermitTunnel

是否允许 tun设备转发。可用值如下:

“yes”,“point-to-point”(layer 3),“ethernet”(layer 2),“no”(默认)。

“yes”同时蕴含着”point-to-point”和”ethernet”。

PermitUserEnvironment

指定是否允许 sshd处理~/.ssh/environment以及~/.ssh/authorized_keys中的 environment=选项。

默认值是”no”。如果设为”yes”可能会导致用户有机会使用某些机制(比如 LD_PRELOAD)绕过访问控制,造成安全漏洞。

PidFile

指定在哪个文件中存放SSH守护进程的进程号,默认为/var/run/sshd.pid文件。

Port

指定 sshd守护进程监听的端口号,默认为 22。可以使用多条指令监听多个端口。

默认将在本机的所有网络接口上监听,但是可以通过 ListenAddress指定只在某个特定的接口上监听。

PrintLastLog

指定 sshd是否在每一次交互式登录时打印最后一位用户的登录时间。默认值是”yes”。

PrintMotd

指定 sshd是否在每一次交互式登录时打印/etc/motd文件的内容。默认值是”yes”。

Protocol

指定 sshd支持的SSH协议的版本号。

’1′和’2′表示仅仅支持SSH-1和SSH-2协议。”2,1″表示同时支持SSH-1和SSH-2协议。

PubkeyAuthentication

是否允许公钥认证。仅可以用于SSH-2。默认值为”yes”。

RhostsRSAAuthentication

是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。

这是通过在RSA认证成功后再检查~/.rhosts或/etc/hosts.equiv进行认证的。

出于安全考虑,建议使用默认值”no”。

RSAAuthentication

是否允许使用纯 RSA公钥认证。仅用于SSH-1。默认值是”yes”。

ServerKeyBits

指定临时服务器密钥的长度。仅用于SSH-1。默认值是 768(位)。最小值是 512。

StrictModes

指定是否要求 sshd在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查。

强烈建议使用默认值”yes”来预防可能出现的低级错误。

Subsystem

配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。

值是一个子系统的名字和对应的命令行(含选项和参数)。比如”sft/bin/sftp-server”。

SyslogFacility

指定 sshd将日志消息通过哪个日志子系统(facility)发送。有效值是:

DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7

TCPKeepAlive

指定系统是否向客户端发送 TCP keepalive消息。默认值是”yes”。

这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。

可以设为”no”关闭这个特性。

UseDNS

指定 sshd是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP地址真实对应。默认值为”yes”。

UseLogin

是否在交互式会话的登录过程中使用 login。默认值是”no”。

如果开启此指令,那么 X11Forwarding将会被禁止,因为 login不知道如何处理 xauthcookies。

需要注意的是,login是禁止用于远程执行命令的。

如果指定了 UsePrivilegeSeparation,那么它将在认证完成后被禁用。

UsePrivilegeSeparation

是否让 sshd通过创建非特权子进程处理接入请求的方法来进行权限分离。默认值是”yes”。

认证成功后,将以该认证用户的身份创建另一个子进程。

这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。

UsePAM

是否使用PAM登陆。

X11DisplayOffset

指定 sshdX11转发的第一个可用的显示区(display)数字。默认值是 10。

这个可以用于防止 sshd占用了真实的 X11服务器显示区,从而发生混淆。

X11Forwarding

是否允许进行 X11转发。默认值是”no”,设为”yes”表示允许。

如果允许X11转发并且sshd代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。

那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为”no”。

需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。

如果启用了 UseLogin,那么X11转发将被自动禁止。

X11UseLocalhost

sshd是否应当将X11转发服务器绑定到本地loopback地址。默认值是”yes”。

sshd默认将转发服务器绑定到本地loopback地址并将 DISPLAY环境变量的主机名部分设为”localhost”。

这可以防止远程主机连接到 proxy display。不过某些老旧的X11客户端不能在此配置下正常工作。

为了兼容这些老旧的X11客户端,你可以设为”no”。

XAuthLocation

指定 xauth程序的绝对路径。默认值是/usr/X11R6/bin/xauth

OpenSSH安装与使用-Linux

SSH,即安全外壳协议,有SSH1和SSH2两个版本,SSH2改进了加密和完整性验证,常用工具包括openssh等。本文主要讲解如何在Linux上安装和使用SSH进行登录。

1. SSH安装与登录方式

SSH支持口令验证和密钥验证两种登录方式。口令验证通过客户端和服务器交换公钥加密口令实现;密钥验证则无需口令,只需在服务器上配置客户端的公钥。安装OpenSSH可通过系统命令,如在Ubuntu或RedHat/CentOS上进行。

2. SSH登录方法

-

口令验证:服务器发送公钥,客户端用口令加密并发送,服务器用私钥验证口令。

-

密钥验证:客户端将公钥部署到服务器,服务器随机生成字符串加密后发送,客户端解密并验证。

3. SSH Key登录与配置

-

生成SSH key,公钥要保密,私钥则需妥善保管。客户端通过ssh-keygen命令生成,部署时可使用ssh-copy-id或修改authorized_keys文件。

-

登录时,选择公钥验证,客户端指定部署好的公钥文件即可免密码登录。

4. SSH隧道(端口转发)

-

SSH不仅能加密通信,还支持端口转发功能,允许在防火墙限制的网络环境中通过SSH访问其他服务。

-

端口转发有本地、远程和动态三种,通过SSH命令行指定目标主机、端口和转发类型实现。

总结

SSH在Linux系统中用于安全登录和数据加密,通过安装OpenSSH、配置公钥和端口转发等功能,可以方便地实现远程访问和数据传输。要根据实际需求选择合适的登录方式和配置设置。

OpenSSH版本介绍

OpenSSH,一个广泛使用的安全网络协议工具包,主要支持SSH(Secure Shell)协议的多个版本。最初的版本包括1.3和1.5,这两个版本在早期被广泛采用。然而,随着OpenSSH的不断更新,版本2的引入引起了显著变化。自OpenSSH的版本2.9起,它成为了默认的协议选择,这意味着用户在不额外配置的情况下,将使用版本2进行通信。

版本2引入了诸多改进,其中最重要的是它默认使用RSA加密算法,这是一种广泛认可的安全机制,为数据传输提供了强大的加密保护。无论是对于服务器管理、远程登录还是文件传输,版本2的RSA支持使得OpenSSH在保证安全性的前提下,提升了性能和易用性。

无论你是在Linux、macOS还是其他支持OpenSSH的平台上,只要使用了版本2.9或之后的版本,用户就能享受到SSH协议的这些优势。OpenSSH的持续更新和改进,使得它在网络安全领域扮演了重要角色,成为现代网络管理不可或缺的一部分。

阅读剩余
THE END