Linux SSH 与 SSH密钥认证

什么是SSH?
SSH是一个在应用程序中提供安全通信的协议.
为什么我要使用SSH?
    Telnet服务虽然使用方便,但是由于安全性不高(因为明文发送账号密码),因此目前通常使用SSH(Secure Shell)代替Telnet进行远程管理。SSH是一个在应用程序中提供安全通信的协议,通过SSH可以用安全的访问服务器,因为SSH基于成熟的共钥加密体系,把所有的传输的数据进行加密,保证数据在传输时不被恶意破坏,泄漏,篡改。SSH还是用了多种加密和认证方式,解决了传输中数据加密和身份认证的问题,能有效的防止网络嗅探和ip欺骗等攻击。
OpenSSH
    Linux下广泛使用免费的OpenSSH程序来实现SSH协议.Red Hat Enterprise linux 4也同样使用OpenSSH.它同时支持SSH1和SSH2协议.

一、检查系统是否安装OpenSSH
[root@simple ~]# rpm -q openssh-server
openssh-server-3.9p1-8.RHEL4.15

二、SSH服务的配置
1、配置SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的。
2、因为SSH服务使用默认的配置已经能够很好的工作,如果仅仅提供SSH服务不需要修改。这里只介绍一
些常用的选项。
#Port 22
定义了SSH服务监听的断口号,SSH服务默认使用的端口号是22
#Proctocol 2,1
定义了SSH服务器使用SSH协议的顺序。默认识先使用SSH2协议,如果不成功则使用SSH1协议,为了安全起
见,可以设置只使用SSH2协议。
#ListenAddress 0.0.0.0
定义SSH服务器帮定的IP地址,默认绑定服务器所有可用的IP地址.
#PermitRootLogin yes
定义是否允许管理员登陆
#PermitEmptyPasswords no
定义是否允许空密码登陆.
#PasswordAuthentication no
定义是否使用口令认证方式,如果准备使用公钥认证可以设置为no

三、启动,停止,加载修改文件
[root@simple ~]# /etc/init.d/sshd start     #启动SSH服务
[root@simple ~]# /etc/init.d/sshd stop      #停止SSH服务
[root@simple ~]# /etc/init.d/sshd restart   #重新启动SSH服务
[root@simple ~]# /etc/init.d/sshd reload    #加载修改后的配置文件并生效

四、使用公钥认证
1、原理:首先由用户生成一对密钥,然后将公钥保存在SSH服务器用户的目录下.ssh子目录中的authorized_key文件里(/root/.ssh/authorized_key).私钥保存在本地计算机.当用户登陆时,服务器检查authorized_key文件的公钥是否与用户的私钥对应,如果相符则允许登入,否则拒绝.由于私钥只有保存在用户的本地计算机中,因此入侵者就算得到用户口令,也不能登陆到服务器.
2、启用公钥认证
修改配置文件/etc/ssh/sshd_config
将”PasswordAuthentication yes”修改为”PasswordAuthentication no”
3、生成密钥
[root@rain ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53 root@rain.fish.com
4、将/root/.ssh/id_rsa.pub改名为/root/.ssh/authorized_keys
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
5、将私钥id_rsa拷贝到客户机
A:linux下可以拷贝到/root/.ssh/就可以直接使用了。
测试:
[root@simple ~]# hostname
simple.fish.com
[root@simple ~]# ssh 10.0.0.20
Last login: Fri Sep 22 23:26:09 2006 from 10.0.0.30
[root@rain ~]# hostname
rain.fish.com
测试通过:
B:windows下使用putty远程连接
因为putty不能识别直接从服务器拷贝来的私钥,那么还需要下载一个工具将私钥的格式转化为putty使用
的格式。
工具名称:puttygen.exe
下载地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
格式转换
1)、打开工具puttygen.exe –> Conversions –> Import Key
2)、选择从拷贝过来的私钥文件id_rsa
3)、Save private key 名字随便 例如ftpserver.ppk
测试:打开工具putty.exe
1)、Session –> Host Name (填写服务器地址或者域名)
2)、Connection –> SSH –> Auth (点Browse选择刚才经过格式转换的ftpserver.ppk)
3)、open
login as: root
Authenticating with public key “imported-openssh-key”
Last login: Fri Sep 22 23:31:34 2006 from 10.0.0.10
[root@rain ~]# hostname
rain.fish.com
测试通过

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>