ssh配置.docx

上传人:b****5 文档编号:14614933 上传时间:2023-06-25 格式:DOCX 页数:8 大小:37.50KB
下载 相关 举报
ssh配置.docx_第1页
第1页 / 共8页
ssh配置.docx_第2页
第2页 / 共8页
ssh配置.docx_第3页
第3页 / 共8页
ssh配置.docx_第4页
第4页 / 共8页
ssh配置.docx_第5页
第5页 / 共8页
ssh配置.docx_第6页
第6页 / 共8页
ssh配置.docx_第7页
第7页 / 共8页
ssh配置.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ssh配置.docx

《ssh配置.docx》由会员分享,可在线阅读,更多相关《ssh配置.docx(8页珍藏版)》请在冰点文库上搜索。

ssh配置.docx

ssh配置

在SSH中使用RSA和DSA认证(无须密码验证)

来源:

ChinaUnix博客 日期:

2009.06.2717:

46 (共有0条评论)我要评论

 

一直想把自己的服务器的SSH认证的模式从用户名密码模式转换成RSA和DSA认证协议,借着OpenSSH4.2的发布,今天写了一下配置过程并收集了一些关于RSA和DSA的参考文章。

思路整理:

一直没有理解公匙模式下的认证过程,这里总结一下公匙和秘匙的制作和安置方法。

以下假设一台服务器Server和一台PC作为例子。

首先,并不是在服务器上生成公匙和秘匙。

因为很多关于RSA和DSA认证协议的文章都使用Linux服务器作为道具,自然也就使用诸如ssh-keygen-trsa之类的命令,而使得我总是误认为要先在Linux服务器上先生成公匙和秘匙。

而真正的安置方法是:

当从PC连接Server的时候,需要在PC上保存一对公匙和秘匙(这对公匙和秘匙可以用诸如PenguiNet之类的工具生成),而只要把生成的公匙传到Server上即可。

而往往在Server上,公匙是被放在~/.ssh/authorized_keys这个文件中。

这个文件的设置可以在/etc/ssh/sshd_config中找到。

AuthorizedKeysFile.ssh/authorized_keys那么当从一个LinuxClientServer连接到另外一个LinuxServer的时候,我们应该在LinuxClientServer上生成一对秘匙(RSA时默认为id_rsa和id_rsa.pub),保存在~/.ssh/中,这个设置可以在/etc/sshd/ssh_config中设置:

#IdentityFile~/.ssh/identity

#IdentityFile~/.ssh/id_rsa

#IdentityFile~/.ssh/id_dsa这样我们也可以更好地理解ssh_config和sshd_config的区别了。

RAS/DSA认证安装过程(以tenten用户为例):

(以下测试在最新的OpenSSH4.2下通过,在OpenSSH_3.9p1下测试失败!

[root@domain~]$su-tenten

[tenten@domain~]ssh-keygen-trsa

Generatingpublic/privatersakeypair.

Enterfileinwhichtosavethekey(/home/tenten/.ssh/id_rsa):

[Enter]

Enterpassphrase(emptyfornopassphrase):

Entersamepassphraseagain:

Youridentificationhasbeensavedin/home/tenten/.ssh/id_rsa.

Yourpublickeyhasbeensavedin/home/tenten/.ssh/id_rsa.pub.

Thekeyfingerprintis:

c7:

93:

83:

c4:

24:

30:

56:

90:

37:

a0:

eb:

a7:

5d:

4c:

8d:

ea:

1a:

tenten@

:

:

:

或者:

:

:

[tenten@kdx~]$ssh-keygen-tdsa

Generatingpublic/privatedsakeypair.

Enterfileinwhichtosavethekey(/home/tenten/.ssh/id_dsa):

Enterpassphrase(emptyfornopassphrase):

Entersamepassphraseagain:

Youridentificationhasbeensavedin/home/tenten/.ssh/id_dsa.

Yourpublickeyhasbeensavedin/home/tenten/.ssh/id_dsa.pub.

Thekeyfingerprintis:

a2:

be:

16:

2e:

66:

e4:

69:

68:

a0:

eb:

a7:

5d:

4c:

8d:

ea:

1a:

da:

54:

35:

55:

32:

8e:

e2tenten@

查看生成的文件:

[tenten@kdx~]$ls/home/tenten/.ssh/-la

total28

drwx------2tentententen4096Oct1116:

09.

drwx------3tentententen4096Oct916:

50..

-rw-------1tentententen736Oct1116:

09id_dsa

-rw-r--r--1tentententen612Oct1116:

09id_dsa.pub

-rw-------1tentententen951Oct1116:

03id_rsa

-rw-r--r--1tentententen232Oct1116:

03id_rsa.pub

-rw-r--r--1tentententen667Oct916:

48known_hosts设置sshd_config文件,去除密码认证

#Todisabletunneledcleartextpasswords,changetonohere!

PasswordAuthenticationno由于在sshd_config文件里面,我们设置了以下内容:

#AuthorizedKeysFile.ssh/authorized_keys所以我们要把共匙重命名为autherized_keys

[root@domain.ssh]#mvid_dsa.pubautherized_keys所以最终服务器端~/.ssh/目录下的内容为(注意authorized_keys的权限为644)

[tenten@domain.ssh]$ls-la

total12

drwx------2tentententen4096Oct1119:

57.

drwx------3tentententen4096Oct1118:

50..

-rw-r--r--1tentententen232Oct1119:

46authorized_keys

引申:

在安装openssh的最后,输入makeinstall命令后,会发现最后会生成public/privatekey:

Generatingpublic/privatersa1keypair.

Youridentificationhasbeensavedin/usr/local/etc/ssh_host_key.

Yourpublickeyhasbeensavedin/usr/local/etc/ssh_host_key.pub.

Thekeyfingerprintis:

22:

67:

00:

5f:

82:

87:

ab:

22:

e7:

8e:

cd:

bb:

d2:

07:

98:

57root@

Generatingpublic/privatedsakeypair.

Youridentificationhasbeensavedin/usr/local/etc/ssh_host_dsa_key.

Yourpublickeyhasbeensavedin/usr/local/etc/ssh_host_dsa_key.pub.

Thekeyfingerprintis:

17:

6c:

d8:

6f:

31:

db:

bd:

3c:

66:

81:

86:

12:

13:

a4:

33:

a3root@

Generatingpublic/privatersakeypair.

Youridentificationhasbeensavedin/usr/local/etc/ssh_host_rsa_key.

Yourpublickeyhasbeensavedin/usr/local/etc/ssh_host_rsa_key.pub.

Thekeyfingerprintis:

27:

0e:

16:

41:

f8:

96:

ed:

93:

b6:

a8:

61:

74:

fe:

87:

e2:

91root@

/usr/local/sbin/sshd-t-f/usr/local/etc/sshd_config

参考文档:

张微波:

linux下SSH配合SecureCRT的密匙完美使用方法

DanielRobbins:

通用线程:

OpenSSH密钥管理,第1部分

OpenSSH的RSA和DSA认证协议的基础是一对专门生成的密钥,分别叫做专用密钥和公用密钥。

使用这些基于密钥的认证系统的优势在于:

在许多情况下,有可能不必手工输入密码就能建立起安全的连接。

英文原文:

Commonthreads:

OpenSSHkeymanagement,Part1

李洋:

使用SSH实现Linux下的安全数据传输

ssh-keygenDescription

ssh-keygengenerates,managesandconvertsauthenticationkeysforssh

(1).ssh-keygencancreateRSAkeysforusebySSHprotocolversion1andRSAorDSAkeysforusebySSHprotocolversion2.Thetypeofkeytobegeneratedisspecifiedwiththe-toption.

通用线程:

OpenSSH密钥管理,第1部分

RSA/DSA密钥的工作原理

下面从整体上粗略的介绍了RSA/DSA密钥的工作原理。

让我们从一种假想的情形开始,假定我们想用RSA认证允许一台本地的Linux工作站(称作localbox)打开remotebox上的一个远程shell,remotebox是我们的ISP的一台机器。

此刻,当我们试图用ssh客户程序连接到remotebox时,我们会得到如下提示:

%sshdrobbins@remotebox

drobbins@remotebox'spassword:

此处我们看到的是ssh处理认证的缺省方式的一个示例。

换句话说,它要求我们输入remotebox上的drobbins这个帐户的密码。

如果我们输入我们在remotebox上的密码,ssh就会用安全密码认证协议,把我们的密码传送给remotebox进行验证。

但是,和telnet的情况不同,这里我们的密码是加密的,因此它不会被偷看到我们的数据连接的人截取。

一旦remotebox把我们提供的密码同它的密码数据库相对照进行认证,成功的话,我们就会被允许登录,还会有一个remotebox的shell提示欢迎我们。

虽然ssh缺省的认证方法相当安全,RSA和DSA认证却为我们开创了一些新的潜在的机会。

但是,与ssh安全密码认证不同的是,RSA认证需要一些初始配置。

我们只需要执行这些初始配置步骤一次。

之后,localbox和remotebox之间的RSA认证就毫不费力了。

要设置RSA认证,我们首先得生成一对密钥,一把专用密钥和一把公用密钥。

这两把密钥有一些非常有趣的性质。

公用密钥用于对消息进行加密,只有拥有专用密钥的人才能对该消息进行解密。

公用密钥只能用于加密,而专用密钥只能用于对由匹配的公用密钥编码的消息进行解密。

RSA(和DSA)认证协议利用密钥对的这些特殊性质进行安全认证,并且不需要在网上传输任何保密的信息。

要应用RSA或者DSA认证,我们要执行一步一次性的配置步骤。

我们把公用密钥拷贝到remotebox。

公用密钥之所以被称作是“公用的”有一个原因。

因为它只能用于对那些给我们的消息进行加密,所以我们不需要太担心它会落入其它人手中。

一旦我们的公用密钥已经被拷贝到remotebox并且为了remotebox的sshd能够定位它而把它放在一个专门的文件(~/.ssh/authorized_keys)里,我们就为使用RSA认证登录到remotebox上做好了准备。

要用RSA登录的时候,我们只要在localbox的控制台键入sshdrobbins@remotebox,就象我们常做的一样。

可这一次,ssh告诉remotebox的sshd它想使用RSA认证协议。

接下来发生的事情非常有趣。

Remotebox的sshd会生成一个随机数,并用我们先前拷贝过去的公用密钥对这个随机数进行加密。

然后,sshd把加密了的随机数发回给正在localbox上运行的ssh。

接下来,轮到我们的ssh用专用密钥对这个随机数进行解密后,再把它发回给remotebox,实际上等于在说:

“瞧,我确实有匹配的专用密钥;我能成功的对您的消息进行解密!

”最后,sshd得出结论,既然我们持有匹配的专用密钥,就应当允许我们登录。

因此,我们有匹配的专用密钥这一事实授权我们访问remotebox。

ssh协议的版本1使用的是RSA密钥,而DSA密钥却用于协议级2,这是ssh协议的最新版本。

目前所有的OpenSSH版本都应该既能使用RSA密钥又能使用DSA密钥。

DSA密钥以如下类似于RSA密钥的方式使用OpenSSH的ssh-keygen生成:

ssh_config和sshd_config的设置说明

配置“/etc/ssh/ssh_config”文件“/etc/ssh/ssh_config”文件是OpenSSH系统范围的配置文件,允许你通过设置不同的选项来改变客户端程序的运行方式。

这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。

下面列出来的是最重要的关键词,用man命令查看帮助页(ssh

(1))可以得到详细的列表。

编辑“ssh_config”文件(vi/etc/ssh/ssh_config),添加或改变下面的参数:

#Site-widedefaultsforvariousoptions

Host*

ForwardAgentno

ForwardX11no

RhostsAuthenticationno

RhostsRSAAuthenticationno

RSAAuthenticationyes

PasswordAuthenticationyes

FallBackToRshno

UseRshno

BatchModeno

CheckHostIPyes

StrictHostKeyCheckingno

IdentityFile~/.ssh/identity

Port22

Cipherblowfish

EscapeChar~

下面逐行说明上面的选项设置:

Host*

选项“Host”只对能够匹配后面字串的计算机有效。

“*”表示所有的计算机。

ForwardAgentno

“ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。

ForwardX11no

“ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAYset)。

RhostsAuthenticationno

“RhostsAuthentication”设置是否使用基于rhosts的安全验证。

RhostsRSAAuthenticationno

“RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。

RSAAuthenticationyes

“RSAAuthentication”设置是否使用RSA算法进行安全验证。

PasswordAuthenticationyes

“PasswordAuthentication”设置是否使用口令验证。

FallBackToRshno

“FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。

UseRshno

“UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。

BatchModeno

“BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。

当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。

CheckHostIPyes

“CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。

建议设置为“yes”。

StrictHostKeyCheckingno

“StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。

IdentityFile~/.ssh/identity

“IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。

Port22

“Port”设置连接到远程主机的端口。

Cipherblowfish

“Cipher”设置加密用的密码。

EscapeChar~

“EscapeChar”设置escape字符。

配置“/etc/ssh/sshd_config”文件“/etc/ssh/sshd_config”是OpenSSH的配置文件,允许设置选项改变这个daemon的运行。

这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。

下面列出来的是最重要的关键词,用man命令查看帮助页(sshd(8))可以得到详细的列表。

编辑“sshd_config”文件(vi/etc/ssh/sshd_config),加入或改变下面的参数:

#Thisissshserversystemwideconfigurationfile.Port22ListenAddress192.168.1.1HostKey/etc/ssh/ssh_host_keyServerKeyBits1024LoginGraceTime600KeyRegenerationInterval3600PermitRootLoginnoIgnoreRhostsyesIgnoreUserKnownHostsyesStrictModesyesX11ForwardingnoPrintMotdyesSyslogFacilityAUTHLogLevelINFORhostsAuthenticationnoRhostsRSAAuthenticationnoRSAAuthenticationyesPasswordAuthenticationyesPermitEmptyPasswordsnoAllowUsersadmin

下面逐行说明上面的选项设置:

Port22

“Port”设置sshd监听的端口号。

ListenAddress192.168.1.1

“ListenAddress”设置sshd服务器绑定的IP地址。

HostKey/etc/ssh/ssh_host_key

“HostKey”设置包含计算机私人密匙的文件。

ServerKeyBits1024

“ServerKeyBits”定义服务器密匙的位数。

LoginGraceTime600

“LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。

KeyRegenerationInterval3600

“KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。

重新生成密匙是为了防止用盗用的密匙解密被截获的信息。

PermitRootLoginno

“PermitRootLogin”设置root能不能用ssh登录。

这个选项一定不要设成“yes”。

IgnoreRhostsyes

“IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。

IgnoreUserKnownHostsyes

“IgnoreUserKnownHosts”设置sshdaemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts”

StrictModesyes

“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。

这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。

X11Forwardingno

“X11Forwarding”设置是否允许X11转发。

PrintMotdyes

“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。

SyslogFacilityAUTH

“SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facilitycode”。

LogLevelINFO

“LogLevel”设置记录sshd日志消息的层次。

INFO是一个好的选择。

查看sshd的man帮助页,已获取更多的信息。

RhostsAuthenticationno

“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。

RhostsRSAAuthenticationno

“RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。

RSAAuthenticationyes

“RSAAuthentication”设置是否允许只有RSA安全验证。

PasswordAuthenticationyes

“PasswordAuthentication”设置是否允许口令验证。

PermitEmptyPasswordsno

“PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。

AllowUsersadmin

“AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。

主机名可以是DNS名或IP地址。

配置OpenSSH使其使用TCP-Wrappersinetd超级服务器

TCP

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2