系统环境 : ubuntu 6.06 / ubuntu 6.10
SSH服务 : openssh-server
1) 在本地主机生成密钥对
ssh-keygen -t rsa
这个命令生成一个密钥对:id_rsa(私钥文件)和id_rsa.pub(公钥文件)。默认被保存在~/.ssh/目录下。
2) 将公钥添加到远程主机的 authorized_keys 文件中
将文件上传到远程主机中
scp ~/.ssh/id_rsa.pub root@192.168.1.23:/root/
SSH到登陆到远程主机,将公钥追加到 authorized_keys 文件中
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
或直接运行命令:
cat ~/.ssh/id_dsa.pub|ssh root@192.168.1.23 `cat - >> ~/.ssh/authorized_keys`
3) 重启 open-ssh 服务
/etc/init.d/ssh restart
4) 测试
ssh root@192.168.1.23
scp /home/onion/.ssh/id_rsa.pub root@192.168.1.23:/root/
呵呵,不用输入密码了
3 Responses to "SSH不输入密码连接远程Linux主机"
rae Says:
November 3rd, 2006 at 10:02 pm 可以简化一点操作,
scp ~/.ssh/id_rsa.pub [email=root@192.168.1.23:/root/.ssh/authorized_keys]root@192.168.1.23:/root/.ssh/authorized_keys[/email]
而且个人的公钥操作不影响服务器,服务器不必重启。
rae Says:
November 3rd, 2006 at 10:16 pm 解决多人合用一个authorized_keys的情况:
cat ~/.ssh/id_rsa.pub|ssh root@192.168.1.23 'cat >> /root/.ssh/authorized_keys'
修正 :
cat ~/.ssh/id_ras.pub|ssh 192.168.1.23 `cat - >> ~/.ssh/authorized_keys`
Onion Says:
November 3rd, 2006 at 10:31 pm 感谢rae的耐心解答.
先假定:
A为本地主机(即用于控制其他主机的机器)
B为远程主机:192.168.1.240
A和B的系统都是Linux
具体操作:
在A上执行如下的命令:
1. /usr/bin/ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)
2. ssh root@192.168.1.240 'mkdir .ssh;chmod 0700 .ssh' (需要输入密码)如果 B机器上存在 /root/.ssh 目录 则免去此步骤
3. scp /root/.ssh/id_rsa.pub root@192.168.1.240:/root/.ssh/authorized_keys2 (需要输入密码) 将公钥送到B机器上.
在A机器上做试验:
1. ssh root@192.168.1.240 (不需要密码, 登录成功)
以上应用主要为了实现自动远程备份..
 
bak.sh
 
find /home/wiki/server/confluence-1.4.4/backups/ -mtime +6 -type f -name '*'| xa
rgs rm -f
mkdir $(date +/home/bak/%y%m%d)
cd $(date +/home/bak/%y%m%d)
tar cvfz $(date +wiki_%y%m%d.tar.gz) /home/wiki
tar cvfz $(date +mysql_%y%m%d.tar.gz) /var/lib/mysql
ssh root@192.168.1.240 'mkdir $(date +/home/245bak/bak%y%m%d);'
scp -rp * root@192.168.1.240:/$(date +/home/245bak/bak%y%m%d/)