linux ssh root登录配置/无密码和证书登录

作者:简简单单 2012-03-02

一、无密码登录办法

环境:本机器:ubuntu 9.04,服务器centos5.x系列。
最近为了工作需要,开机启动将服务器的文件挂载到自己的工作区,
一开始采用smbmount进行挂载,建立项目进行开发。挂载里面的文件,每次保存时都会提示你文件已经修改需要你刷新整个项目,太麻烦了。都不敢随便保存。不实时保存容易出现的问题大家可想而知。
Samba是为大家在windows和linux进行文件共享量身定制的。但是对于linux而言就不尽人意了。

smbmount 挂载可以直接在参数上面输入用户名和密码。当然开机挂载很容易了,命令如下:

  1. sudo /etc/rc.local;
    smbmount //ip:/xxx /mnt/ -o user%pwd;
以上方式不推荐使用。
那么linux之间挂载采用什么方式呢 —— 有以下两种 nfs,sshfs。本人再用的是sshfs。
具体挂载命令如下。
  1. 安装 :sudo apt-get install sshfs;
  2. sudo sshfs user@ip-address:/remote/directory /www/workspaces;
  3. 开机自动挂载
    sudo /etc/rc.local;
  4. 在exit 0 之前加上:
    su martin -c 'sshfs user@ip-address:
    /remote/directory /www/workspaces;’#martin拥有私钥的用户
  5. 但是这个中间需要输入密码。下面讲以下ssh无密码登录.
适用情景:
  • 觉得输入密码烦躁的时候。
  • 不得不从其他服务器scp文件的时候。
下面M表示本机,S表示服务器(或者目的ip)
  1. 首先在M运行ssh-keygen -t rsa;#dsa表示加密类型,exp:dsa,rsa
    然后回车知道结束。
  2. cd ~/.ssh/;ls -l;会看见有下面几个文件
    ssh use public key
    ssh use public key
    其中id_rsa 是私钥。id_rsa.pub是公钥。
    将M中ssh生成的公钥复制下来。
  3. 接下来进如ssh 链接上S机器。
    将公钥内容复制到S机器。
    vi ~/.ssh/authorized_keys;
  4. 在S机器将文件authorized_keys赋予600权限。
    chmod 600 ~/.ssh/authorized_keys;
    多个用户可以将自己机器内生成的公钥在authorized_keys下面复制进去。
这样就完成了。
vi /var/log/secure;可以看到登录记录。
ssh use public key
ssh use public key
卸载,方法使用umount /xxx就行。
出现错误

Agent admitted failure to sign using the key.
则需要在M机器上将私钥添加进来
ssh-add .ssh/id_rsa;

 

二、linux使用证书ssh登陆

ssh-keygen -t rsa
指定密钥路径和输入口令之后,即在/home/msa/.ssh/中生成公钥和私钥:id_rsa id_rsa.pub(root账号下在/root/.ssh/中)
输入口令之后在CRT中登陆的时候需验证口令

如以下例子
[root@kangta-01 .ssh]# 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:
06:25:cd:e3:b6:e7:13:76:3e:59:81:4f:77:43:bd:0a root@kangta-01
[root@kangta-01 .ssh]# ll
总计 12
-rw------- 1 root root 1743 11-28 23:47 id_rsa
-rw-r--r-- 1 root root 396 11-28 23:47 id_rsa.pub
-rw-r--r-- 1 root root 395 11-17 00:38 known_hosts


cat id_rsa.pub >> authorized_keys
至于为什么要生成这个文件,sshd_config里面写的就是这个.
然后chmod 400 authorized_keys,稍微保护一下.

在CRT上的终端可用sz id_rsa拉回本地,然后把服务器上的id_rsa和id_rsa.pub干掉

6)配置/etc/ssh/sshd_config
Protocol 2
ServerKeyBits 1024
PermitRootLogin no #禁止root登录而已,与本文无关,加上安全些

#以下三行没什么要改的,把默认的#注释去掉就行了
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication no
PermitEmptyPasswords no

7)重启sshd
/sbin/service sshd restart

8)转换证书格式
运行CRT,在tools下convert private key to openssh format 转换id_rsa为crt的ppk证书文件

9)配置CRT登录
在connection--SSH--publickey中,点击Browse,选择刚刚转换好的证书.


三、SSH远程登录失败,提示“Password authentication failed”


用SecureCRT登陆,提示“Password authentication failed”

使用linux下ssh登陆,提示“Permission denied, please try again.” 

网上收集的相关资料:

方法一:

1. vi服务器端的/etc/ssh/sshd_config

2. 把PasswordAuthentication设成yes

3. 重启ssh服务

  

方法二:

1.vi服务器端的/etc/ssh/sshd_config

2.找到#PermitRootLogin no将其修改为PermitRootLogin yes

 方法三:

1.查看sshd是否正确在运行

   netstat -anp | grep sshd 

2.如果没有运行使用 service sshd restart 重启服务

 方法四:

1.客户端使用 ssh -v root@192.168.0.120 查看登陆信息

2.提示“Permission denied, please try again.”

3.查看防火墙

  #/etc/init.d/iptables status

  如果22端口被限制则无法登陆。

  放开端口22

 #/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT

 #/etc/rc.d/init.d/iptables save

相关文章

精彩推荐