Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10379
  • 博文数量: 3
  • 博客积分: 76
  • 博客等级: 民兵
  • 技术积分: 35
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-06 22:29
文章分类
文章存档

2012年(3)

我的朋友
最近访客

分类: LINUX

2012-03-12 09:48:43

如果执行ssh-keygen -i -f lgz-keys.pub >> authorized_keys这句总是出现lgz-keys.pub: Permission denied 那么就关闭selinux  ,/etc/selinux/config,把 SELINUX=enforcing 注释掉:#SELINUX=enforcing ,然后新加一行为:SELINUX=disabled



(1)SSH Secure Shell的Edit菜单àSetting菜单,找到Keys,然后Generate New..开始生成新密钥;

(2)下一步(全部默认即可),选择DSA吧(RSA也可以,但RSA和DSA差不多,DSA耗资源少点,其实这点资源消耗可以忽略不计);

(3)下一步,File,取个文件名:zx-ssh,别的可以不填直接点“完成”,Passphrase写了则每次连接时需要输入,我喜欢连密码都不输;为了实现自动登录,passphrase为空,但这样不安全,还是设置一个passphrase吧,如果你的ssh secure shell界面不关闭,输入一是passphrase就可以一直好用的,有passphrase可以防止私钥被人盗用;

(4)找到密钥存放的目录:我是windows7,在C:\Users\ZX\AppData\Roaming\SSH\UserKeys,有2个文件:zx-ssh(私钥,与公钥一起存放到本地或复制到U盘,在没有使用该过密钥的机器上要访问服务器,则需要导入密钥:SSH Secure Shell的Edit菜单àSetting菜单,找到Keys,然后Import导入,往往在Import是,要求你输入的是公钥文件名,没关系,导入公钥则私钥也导入成功,在配置文件夹中会自动生成2个文件,就是导入的公钥和私钥;zx-ssh.pub(公钥,上传到服务器用户主目录中,等待转换格式,需要转换为openssh格式才可以被服务器识别);到此为止,windows这边已经准备好了。

(5)服务器端(以CentsOS6.2为例),修改配置文件:vi/etc/ssh/sshd_config

启用ChallengeResponseAuthentication no #启用此项才可以真正取消密码验证

启用UsePAM yes

(6)将生产的公钥(zx-ssh.pub),上传到服务器用户主目录(自己想办法传),复制到用户主目录下的.ssh目录中,然后进行格式转换(转换为openssl格式):

cd /root/.ssh/

  ssh-keygen -i -f  zx-ssh.pub>>authorized_keys #转换格式openss格式,并将公钥导入到authorized_keys文件中

  chmod 640 authorized_keys#设置权限,使该文件仅允许属主读写

rm zx-ssh.pub#删除上传的公钥,要不然留住也没用

这里要注意一个问题,就是这个linux主机如果有多个公钥,要注意每个公钥后面需要有个回车或是换行,不能将多个公钥直接罗列在一行。

应该重新检查一下你的authorized_keys的权限(640)。也可能要检查.ssh目录的权限,.ssh目录应该对“组用户”(group)和“其它用户”(other)没有写的权限。运行下面的命令来取消“组用户”(group)和“其它用户”(other)对于.ssh目录的写权限(740):chmod go-w ~/.ssh(也可以chmod 740 ~/.ssh,一样的)。

ssh出现permission denied (publickey)问题:

修改/etc/ssh/sshd-config文件.

将其中的PermitRootLogin no修改为yes

PubkeyAuthentication yes修改为no

AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉,

PasswordAuthentication no修改为yes就可以了。


vi /etc/ssh/sshd-config (详细说说sshd-config的配置解释)

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

Port 22

Protocol 2

PermitRootLogin no

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

#CACertificateFile  /etc/ssh/ca/ca.cert

PasswordAuthentication no

PermitEmptyPasswords no

PrintMotd no

ChallengeResponseAuthentication no

UseDNS no

ClientAliveInterval 60



Port 22 # SSH 预设使用 22 这个 port,您也可以使用多的 port !亦即重复使用 port 这个设定项目即可!


Protocol 2 # 选择的 SSH 协议版本,可以是 1 也可以是 2 ,如果要同时支持两者,就必须要使用 2,1 这个分隔了


PermitRootLogin no  # 是否允许 root 登入!预设是允许的,但是建议设定成 no!


PubkeyAuthentication yes  # 是否允许 Public Key


AuthorizedKeysFile .ssh/authorized_keys # 上面这个在设定若要使用不需要密码登入的账号时,那么那个账号的存放档案所在档名!


PasswordAuthentication no # 是否需要密码的验证


PermitEmptyPasswords no # 若上面那一项如果设定为 yes 的话,这一项就最好设定为 no ,这个项目在是否允许以空的密码登入!当然不许!


PrintMotd no # 登入后是否显示出一些信息呢?例如上次登入的时间、地点等

ChallengeResponseAuthentication no # 是否启用其它的 PAM 模块!启用这个模块将会导致 PasswordAuthentication 设定失效!

UseDNS no 

ClientAliveInterval 60 

用:man sshd_config可以看到完整的说明

参考:1:http://blog.chinaunix.net/uid-9881170-id-348605.html

2:http://www.blogjava.net/dongbule/archive/2011/01/04/342275.html


阅读(1953) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~