在redhat es 5.5 安装无密码登陆的openssh(系统自带)1. 确保sshd正常启用

查看 /etc/rc.conf 是否存在 sshd_enable=”YES” ;如果没有添加进去并人工方式启动#/etc/rc.d/sshd start ;然后查询 22端口是否启动:#sockstat -4l


root sshd 8085 4 tcp4 *:22 *:*


2. 配置 OpenSSH

针对 OpenSSH 服务程序和客户端的系统级配置文件在 /etc/ssh 目录中。ssh_config 用于配置客户端的设定, 而 sshd_config 则用于配置服务器端。


现在来说通过配置 OpenSSH 使服务器接受公钥(public-key)认证。sshd_config 这个文件指定的一些默认值都是生效的,虽然这些选项被注释掉了,如果你想改变默认值的话,那就取消注释更改值或者直接添加相同的选项和值覆盖默认值的作用。


#vi /etc/ssh/sshd_config


#默认 SSH 端口为 22 ,如果需要可以更改

Port 22


#仅接受版本2的密钥,默认值

Protocol 2


#绝对不要允许 root 用户直接通过网络登录,默认值

PermitRootLogin no

StrictModes yes

MaxAuthTries 6


#启用公钥认证

RSAAuthentication no #默认值为 yes

PubkeyAuthentication yes #默认值


#不使用基于主机的认证,加强 OpenSSH 的安全性

RhostsRSAAuthentication no #默认值

HostbasedAuthentication no #默认值

IgnoreUserKnownHosts yes #默认值为 no

PermitEmptyPassword no #默认值


#禁用 PAM 认证即口令形式认证 默认值为yes

ChallengeResponseAuthentication no


编辑完成后重启 sshd 进程:`#/etc/rc.d/sshd restart` ;Linux 系统上一般是 `/etc/init.d/ssh restart`


注意:因为是通过 SSH 口令认证的方式连接到服务器来操作,操作ChallengeResponseAuthentication 这个选项改为 no 后不能退出登陆,继续下面操作,或者也可以在成功验证了密钥后再改这个选项。以免出错导致无法远程SSH登录服务器。


3. 生成公钥(public key)和私钥(private key)

用需要生成密钥的用户通过 SSH 密码认证的方式登录

FreeBSD 使用 ssh-keygen 来生成 DSA 或 RSA 密钥对用于验证用户的身份:


% ssh-keygen -t rsa

Generating public/private dsa key pair.


#不输入即使用默认

Enter file in which to save the key (/home/user/.ssh/id_rsa):

Created directory ‘/home/user/.ssh’.


#密钥的密码,需要输入并记住

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/user/.ssh/id_rsa.

Your public key has been saved in /home/user/.ssh/id_rsa.pub.

The key fingerprint is:

bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 user@host.example.com


ssh-keygen 会生成一个包含公私钥对用于验证身份。 私钥将保存到 ~/.ssh/id_dsa 或 ~/.ssh/id_rsa, 而公钥则被存放到 ~/.ssh/id_dsa.pub 或 ~/.ssh/id_rsa.pub,文件名取决于您选择的 DSA 和 RSA 密钥类型。RSA 或者 DSA 公钥必须被存放到远程机器上的 ~/.ssh/authorized_keys 才能够使系统正确运转,因此 `#cp id_rsa.pub authorized_keys`

将公钥复制一份为 authorized_keys 此文件既可。将私钥 id_rsa 复制到 Windows 客户端。


4. 转换 OpenSSH 生成的私钥 id_rsa 到 putty 能使用的文件

这里需要借助一个工具 puttygen.exe ,从 Putty 的网站上可以下载。


执行 puttygen.exe 后,点击 Load 按钮,打开从远程服务器下载的 id_rsa ,这时要求输入生成密钥时输入的密码钥匙

putty 无密码ssh linux_putty

验证成功后显示密钥文件,然后点击 Save private key,就可以将文件另存为 “id_rsa.ppk” 这样的


putty 能够使用的私钥文件了。

5. 配置和使用 Putty

打开 Putty 程序,点击边栏的 SSH ,在 “Preferred SSH protocol version”下选择“2 only”,表


示只使用 SSH 版本2;

点击 SSH 下的 Auth,然后点击 Browse(浏览),打开刚才的转换好的“id_rsa.ppk”私钥

putty 无密码ssh linux_putty_02

最后回到 Session ,在 Host Name 下填入服务器的IP地址或者域名,Saved Sessions 下填入这个会话的会话名称(任意你喜欢的命名),然后点Save保存就设置好了。


接着双击会话名称就打开了登陆界面,与采用口令认证的提示不同,然后输入生成密码时设置的密钥密码既可登陆:


Login as: test

Authenticating with public key “imported-openssh-key”

Passphrase for key “imported-openssh-key”:

Last login: Wed May 31 12:35:00 2006 from 192.168.1.10

test@server:~$


综上所述:


1.用putty生产 ssh2-rsa,1024 的公钥和私钥。


2.配置redhat 系统自带的openssh


Protocol 2


SyslogFacility AUTHPRIV


RSAAuthentication yes


PubkeyAuthentication yes


PasswordAuthentication no


ChallengeResponseAuthentication no


GSSAPIAuthentication yes


GSSAPICleanupCredentials yes


UsePAM yes


AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES


AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT


AcceptEnv LC_IDENTIFICATION LC_ALL


X11Forwarding yes


Subsystem       sftp    /usr/libexec/openssh/sftp-server


3. putty 有三个软件,putty.exe(登陆用) puttygen.exe(生产密钥) pageant.exe(添加密钥工具)


先用puttygen.exe生产公钥私钥,把公钥复制到/home/zakk/.ssh/authorized_keys 私钥自己留着


4.建个用户为wulu


cd /home/wulu


ll wulu


drwx------ 4 wulu   wulu 4096 Sep 9 10:50 wulu


midr .ssh


ls -lah


drwxr-xr-x 2 wulu wulu 4.0K Jun 2 10:04 .ssh     (权限755)


cd .ssh


touch authorized_keys


chown zakk.zakk authorized_keys


ll authorized_keys


-rw-r--r-- 1 wulu wulu 219 Sep 9 10:57 authorized_keys (权限 644)


vi authorized_keys


加入公钥


authorized_keys 这个文件一定是644权限。

注意:


PasswordAuthentication no


需要注意在配置的时候最好先修改为yes,配置好后在关闭,就修改此项需要重启sshd,其余配置均是实时生效,无需重启sshd。


RSAAuthentication no #默认值为 yes

PubkeyAuthentication yes


其实修改此3个参数就可以了。


5,通过sudo bash 无密码切换到root权限


vi /etc/sudoers


找到

“root ALL=(ALL) ALL” 行,并在此行下输入

%zakk ALL   NOPASSWD: ALL(zakk是组需加%)


zakk ALL   NOPASSWD: ALL (如果是用户不需加%)


这样在通过putty,zakk账号登陆后,不需要root密码,直接输入 sudu bash 便可获得root权限,对


服务器来说更加安全。



2010-06-04