OpenSSH配置.docx
- 文档编号:30037343
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:16
- 大小:23.61KB
OpenSSH配置.docx
《OpenSSH配置.docx》由会员分享,可在线阅读,更多相关《OpenSSH配置.docx(16页珍藏版)》请在冰豆网上搜索。
OpenSSH配置
SSH是英文SecureShell的简写形式。
通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人“这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。
使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。
SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的“通道“。
最初的SSH是由芬兰的一家公司开发的。
但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。
OpenSSH是SSH的替代软件包,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:
和。
用SSH的客户程序是不能连接到SSH的服务程序上去的。
OpenSSH同时支持SSH和。
SSH协议的内容
SSH协议是建立在应用层和传输层基础上的安全协议,它主要由以下三部分组成,共同实现SSH的安全保密机制。
传输层协议,它提供诸如认证、信任和完整性检验等安全措施,此外它还可以任意地提供数据压缩功能。
通常情况下,这些传输层协议都建立在面向连接的TCP数据流之上。
用户认证协议层,用来实现服务器的跟客户端用户之间的身份认证,它运行在传输层协议之上。
连接协议层,分配多个加密通道至一些逻辑通道上,它运行在用户认证层协议之上。
当安全的传输层连接建立之后,客户端将发送一个服务请求。
当用户认证层连接建立之后将发送第二个服务请求。
这就允许新定义的协议可以和以前的协议共存。
连接协议提供可用作多种目的通道,为设置安全交互Shell会话和传输任意的TCP/IP端口和X11连接提供标准方法。
SSH的安全验证
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证),只要你知道自己的帐号和口令,就可以登录到远程主机,并且所有传输的数据都会被加密。
但是,这种验证方式不能保证你正在连接的服务器就是你想连接的服务器。
可能会有别的服务器在冒充真正的服务器,也就是受到“中间人“这种攻击方式的攻击。
第二种级别(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。
如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。
服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比较。
如果两个密匙一致,服务器就用公有密匙加密“质询“(challenge)并把它发送给客户端软件。
客户端软件收到“质询“之后就可以用你的私人密匙解密再把它发送给服务器。
与第一种级别相比,第二种级别不需要在网络上传送用户口令。
但是整个登录的过程可能慢一些。
SSH的应用
首先,SSH最常见的应用就是,用它来取代传统的Telnet、FTP等网络应用程序,通过SSH登录到远方机器执行你想进行的工作与命令。
在不安全的网路通讯环境中,它提供了很强的验证(authentication)机制与非常安全的通讯环境。
实际上,SSH开发者的原意是设计它来取代原UNIX系统上的rcp、rlogin、rsh等指令程序的;但经过适当包装后,发现它在功能上完全可以取代传统的Telnet、FTP等应用程序。
传统BSD风格的r系列指令(如rcp,rsh,rlogin)往往都被视为不安全的,很容易就被各种网络攻击手段所破解,几乎所有找得到有关UNIX安全的书或文件,都会一而再、再而三地警告系统管理者,留心r系列指令的设定,甚至要求系统管理者将r系列指令通通关闭。
而用来替代r系列指令的SSH,则在安全方面做了极大的强化,不但对通讯内容可以进行极为安全的加密保护,同时也强化了对身份验证的安全机制,它应用了在密码学(Cryptography)中已发展出来的数种安全加密机制,如SymmetricKeyCryptography,AsymmetricKeyCryptography,One-wayHashFunction,Random-numberGeneration等,来加强对于身份验证与通讯内容的安全保护。
通讯时资料的加密有IDEA,three-keytripleDES,DES,RC4-128,TSS,Blowfish等数种多种安全加密算法可供选择,加密的key则是通过RSA进行交换的。
资料的加密可以对抗IPspoofing,RSA这种非对称性的加密机制则可用来对抗DNSspoofing与IProutingspoofing,同时RSA也可以进行对主机身份的验证。
其次,通过使用用SSH可以在本地主机和远程服务器之间设置“加密通道“,并且这样设置的“加密通道“可以跟常见的Pop应用程序、X应用程序、Linuxconf应用程序相结合,提供安全保障。
SSH的“加密通道“是通过“端口转发“来实现的。
你可以在本地端口(没有用到的)和在远程服务器上运行的某个服务的端口之间建立“加密通道“。
然后只要连接到本地端口。
所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。
当然只有远程服务器上运行SSH服务器软件的时候“加密通道“才能工作。
openssh的安装和启动
tony@tonybox:
~$sudoaptitudeupdatetony@tonybox:
~$sudoaptitudeinstallopenssh-server
Readingpackagelists...Done
Buildingdependencytree...Done
Readingextendedstateinformation
Initializingpackagestates...Done
Readingtaskdescriptions...Done
Buildingtagdatabase...Done
ThefollowingNEWpackageswillbeautomaticallyinstalled:
libedit2openssh-client
ThefollowingNEWpackageswillbeinstalled:
libedit2openssh-clientopenssh-server
0packagesupgraded,3newlyinstalled,0toremoveand0notupgraded.
Needtoget879kBofarchives.Afterunpacking2130kBwillbeused.
Doyouwanttocontinue?
[Y/n/?
]y
...
Settingupopenssh-server...
CreatingSSbRSAkey;thismaytakesometime...
CreatingSSbDSAkey;thismaytakesometime...
RestartingOpenBSDSecureShellserver:
sshd.
启动ssh服务
$sudo/etc/sshstart
停止ssh服务
$sudo/etc/sshstop
重启ssh服务
$sudo/etc/sshrestart
使用ssh首次连接一个远程ssh服务器时,会出现类似下边的信息。
这是因为ssh不能识别这台主机,键入yes将会把这台服务器的信息写入/.ssh/known_hosts文件,下次连入这台远程服务器时就不会出现这类信息。
tony@tonybox:
~$ssh
Theauthenticityofhost''can'tbeestablished.
RSAkeyfingerprintisc6:
d4:
e7:
23:
03:
ce:
15:
2c:
08:
ec:
39:
7e:
52:
29:
a5:
a6.
Areyousureyouwanttocontinueconnecting(yes/no)?
yesWarning:
Permanentlyadded''(RSA)tothelistofknown'spassword:
******
Lastlogin:
ThuOct2610:
38:
412006
Linuxvmdebian2.6.16-2-486#1FriAug1818:
39:
04UTC2006i686
TheprogramsincludedwiththeDebianGNU/Linuxsystemarefreesoftware;
theexactdistributiontermsforeachprogramaredescribedinthe
individualfilesin/usr/share/doc/*/copyright.
DebianGNU/LinuxcomeswithABSOLUTELYNOWARRANTY,totheextent
permittedbyapplicablelaw.
vmdebian:
~#
默认配置
默认sshd_config文件
#Packagegeneratedconfigurationfile
#Seethesshd(8)manpagefordetails#Whatports,IPsandprotocolswelistenfor
Port22
#默认使用22端口
#Usetheseoptionstorestrictwhichinterfaces/protocolssshdwillbindto
#ListenAddress:
:
#ListenAddress0.0.0.0
Protocol2
#使用ssb协议
#HostKeysforprotocolversion2
HostKey/etc/ssh/ssh_host_rsa_key
HostKey/etc/ssh/ssh_host_dsa_key
#主机密钥存储在此
#PrivilegeSeparationisturnedonforsecurity
UsePrivilegeSeparationyes
#需要sshd用户启动ssh服务
#Lifetimeandsizeofephemeralversion1serverkey
KeyRegenerationInterval3600
ServerKeyBits768
服务器在启动时生成这个密钥。
并以固定的周期重新生成。
这里指定长度是768位,最小为512,周期为3600。
#Logging
SyslogFacilityAUTH
#设置syslog的facility(KERN,DAEMON,USER,AUTH,MAIL等)
LogLevelINFO
#指定记录日志级别为INFO,该值从低到高顺序是:
QUIET,FATAL,ERROR,INFO,VERBOSE,DEBUG,使用DEBUG会侵犯用
户的隐私权,这个级别只能用于诊断,而不能用于普通操作。
#Authentication:
LoginGraceTime120
#设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。
PermitRootLoginyes
#允许root登录
StrictModesyes
#设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。
新手会把自己的目录和文件设成任何人都有写权限。
RSAAuthenticationyes
PubkeyAuthenticationyes
#AuthorizedKeysFile%h/.ssh/authorized_keys
#Don'treadtheuser's~/.rhostsand~/.shostsfiles
IgnoreRhostsyes
#完全禁止SSHD使用.rhosts文件
#Forthistoworkyouwillalsoneedhostkeysin/etc/ssh_known_hosts
RhostsRSAAuthenticationno
#设置是否使用用RSA算法的基于rhosts的安全验证。
#similarforprotocolversion2
HostbasedAuthenticationno
#Uncommentifyoudon'ttrust~/.ssh/known_hostsforRhostsRSAAuthentication
#IgnoreUserKnownHostsyes
#设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts”
#Toenableemptypasswords,changetoyes(NOTRECOMMENDED)
PermitEmptyPasswordsno
#设置不允许使用空密码
#Changetoyestoenablechallenge-responsepasswords(bewareissueswith
#somePAMmodulesandthreads)
ChallengeResponseAuthenticationno
#关闭挑战响应
#Changetonotodisabletunnelledcleartextpasswords
#PasswordAuthenticationyes
#设置是否使用明文密码认证
#Kerberosoptions
#KerberosAuthenticationno
#KerberosGetAFSTokenno
#KerberosOrLocalPasswdyes
#KerberosTicketCleanupyes
#有关Kerberos的相关选项
#GSSAPIoptions
#GSSAPIAuthenticationno
#GSSAPICleanupCredentialsyes
#有关GSSAPI的相关选项
X11Forwardingyes
#允许X转发
X11DisplayOffset10
PrintMotdno
PrintLastLogyes
TCPKeepAliveyes
#UseLoginno
#MaxStartups10:
30:
60
#Banner/etc/
#Allowclienttopasslocaleenvironmentvariables
AcceptEnvLANGLC_*
Subsystemsftp/usr/lib/openssh/sftp-server
UsePAMyes
如果没有特别要求使用默认设置即可满足使用要求.基于口令的认证
缺省情况下,ssh仍然使用传统的口令验证,在使用这种认证方式时,我们不需要进行任何配置。
你可以使用自己帐号和口令登录到远程主机。
所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。
可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
使用以下方法登录服务器:
$ssh'spassword:
Linuxvmdebian2.6.16-2-486#1FriAug1818:
39:
04UTC2006i686TheprogramsincludedwiththeDebianGNU/Linuxsystemarefreesoftware;
theexactdistributiontermsforeachprogramaredescribedinthe
individualfilesin/usr/share/doc/*/copyright.
DebianGNU/LinuxcomeswithABSOLUTELYNOWARRANTY,totheextent
permittedbyapplicablelaw.
Lastlogin:
FriDec812:
31:
582006from基于密钥的认证
密匙认证需要依靠密匙,可以使用ssh-keygen命令生成密钥对,将会把生成的私钥存储在/.ssh/id_rsa文件中,公钥存储在/.ssh/文件中,需要将其复制到远程服务器上,这样当登录远程服务器时,客户端软件就会向服务器发出请求,请求用你的密匙进行认证,服务器收到请求之后,先在你在该服务器的宿主目录下寻找你的公匙,进行身份认证.ssh-keygen默认使用rsa算法生成密钥,如果要使用dsa算法,则需要使用-t指定比如($ssh-keygen-tdsa)
tony@tonybox:
~$ssh-keygen
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/tony/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
Entersamepassphraseagain:
Youridentificationhasbeensavedin/home/tony/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/home/tony/.ssh/.
Thekeyfingerprintis:
5e:
25:
fe:
32:
af:
96:
e5:
e2:
c9:
55:
ad:
f9:
d2:
f1:
67:
5dtony@tonybox
tony@tonybox:
~$
然后使用scp命令将公钥上传到远程SSH服务器的对应用户的.ssh目录下,并更名为authorized_keys并确保权限为644
tony@tonybox:
~/.ssh$scp'spassword:
100%394s00:
00
tony@tonybox:
~/.ssh$
这样,以后登录这台SSH服务器的时候,就会使用您上传的公钥进行身份认证。
tony@tonybox:
~$ssh
Linuxvmdebian2.6.16-2-486#1FriAug1818:
39:
04UTC2006i686TheprogramsincludedwiththeDebianGNU/Linuxsystemarefreesoftware;
theexactdistributiontermsforeachprogramaredescribedinthe
individualfilesin/usr/share/doc/*/copyright.
DebianGNU/LinuxcomeswithABSOLUTELYNOWARRANTY,totheextent
permittedbyapplicablelaw.
Lastlogin:
ThuOct2612:
59:
122006from如果为密钥设置了passphrase,则登录过程如下:
tony@tonybox:
~$ssh
Enterpassphraseforkey'/home/tony/.ssh/id_rsa':
Linuxvmdebian2.6.16-2-486#1FriAug1818:
39:
04UTC2006i686TheprogramsincludedwiththeDebianGNU/Linuxsystemarefreesoftware;
theexactdistributiontermsforeachprogramaredescribedinthe
individualfilesin/usr/share/doc/*/copyright.
DebianGNU/LinuxcomeswithABSOLUTELYNOWARRANTY,totheextent
permittedbyapplicablelaw.
Lastlogin:
ThuOct2614:
27:
582006from如果将客户端私钥id_rsa更名,并在服务器端sshd_config文件中做如下设置:
PasswordAuthenticationno
tony@tonybox:
$mv/home/tony/.ssh/id_rsa/home/tony/.ssh/
tony@tonybox:
$ssh
Permissiondenied(publickey).
tony@tonybox:
~$
如果在服务器端sshd_config文件中做如下设置:
PasswordAuthenticationyes
则当密钥口令输入错误,或密钥不存在是,就会使用口令认证
tony@tonybox:
~$ssh
Enterpassphraseforkey'/home/tony/.ssh/id_rsa''spassword:
Linuxvmdebian2.6.16-2-486#1FriAug1818:
39:
04UTC2006i686TheprogramsincludedwiththeDebianGNU/Linuxsystemarefreesoftware;
theexactdistributiontermsforeachprogramaredescribedinthe
individualfilesin/usr/share/doc/*/copyright.
DebianGNU/LinuxcomeswithABSOLUTELYNOWARRANTY,totheextent
permittedbyapplicablelaw.
Lastlogin:
ThuOct2617:
30:
432006from使用windows客户端
在windows客户端下也有很多ssh的客户端,比如putty,它同时兼容ssh1和ssb,在它的网站上提供了很多客户端软件下载,我们通常使用到的是putty和puttygen,其中puttygen用于生成密钥对,操作非常简单,值得注意的是,如果您使用putty以密钥认证方式连接ssh服务器,putty并不能很好的识别ssh-keygen生成的私钥,需要使用puttygen工具进行密钥转换,操作如下:
载入公钥
输入公钥的passphrase
然后使用Saveprivatekey按钮,将转换后的私钥导出即可得到putty可以识别的私钥.就我个个人而言我更倾向于使用pietty,它是putty的改进,对文字编码支持更为丰富,使用起来更具人性化,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenSSH 配置