一、无密码登录办法
环境:本机器:ubuntu 9.04,服务器centos5.x系列。
最近为了工作需要,开机启动将服务器的文件挂载到自己的工作区,
一开始采用smbmount进行挂载,建立项目进行开发。挂载里面的文件,每次保存时都会提示你文件已经修改需要你刷新整个项目,太麻烦了。都不敢随便保存。不实时保存容易出现的问题大家可想而知。
Samba是为大家在windows和linux进行文件共享量身定制的。但是对于linux而言就不尽人意了。
smbmount 挂载可以直接在参数上面输入用户名和密码。当然开机挂载很容易了,命令如下:
- sudo /etc/rc.local;
smbmount //ip:/xxx /mnt/ -o user%pwd;
以上方式不推荐使用。
那么linux之间挂载采用什么方式呢 —— 有以下两种 nfs,sshfs。本人再用的是sshfs。
具体挂载命令如下。
- 安装 :sudo apt-get install sshfs;
sudo
sshfs user@ip-address:
/remote/directory
/www/
workspaces;- 开机自动挂载
sudo /etc/rc.local; - 在exit 0 之前加上:
su martin -c 'sshfs user@ip-address:/remote/directory
/www/
workspaces;’#martin拥有私钥的用户 - 但是这个中间需要输入密码。下面讲以下ssh无密码登录.
适用情景:
- 觉得输入密码烦躁的时候。
- 不得不从其他服务器scp文件的时候。
下面M表示本机,S表示服务器(或者目的ip)
- 首先在M运行ssh-keygen -t rsa;#dsa表示加密类型,exp:dsa,rsa
然后回车知道结束。 - cd ~/.ssh/;ls -l;会看见有下面几个文件
ssh use public key其中id_rsa 是私钥。id_rsa.pub是公钥。
将M中ssh生成的公钥复制下来。 - 接下来进如ssh 链接上S机器。
将公钥内容复制到S机器。
vi ~/.ssh/authorized_keys; - 在S机器将文件authorized_keys赋予600权限。
chmod 600 ~/.ssh/authorized_keys;
多个用户可以将自己机器内生成的公钥在authorized_keys下面复制进去。
这样就完成了。
vi /var/log/secure;可以看到登录记录。
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