设置Linux中的ssh无密码登陆
1.mkdir ~/.ssh;cd ~/.ssh;ssh-keygen -t dsa -P '' -f id_dsa
注:如果没有authorized_keys文件则自己手动新建:touch authorized_keys
通过以上命令生成id_dsa和id_dsa.pub两个文件,前面一个为私钥,后面一个为公钥,当A主机无密码登陆B主机时,A主机会向B主机发送自己的公钥(id_dsa.pub),如果在B主机的.ssh目录下的authorized_keys文件中有A主机的公钥,就允许A主机登陆,否则拒绝。因此只要把A主机的id_dsa.pub里面的内容copy到B主机的autorized_keys里面就可以了,know_hosts可以看作是其他主机无密码登陆到本主机的记录。
注意:
(1).如果要ssh无密码登陆本机,则需要把本机中的.id_dsa.pub内容copy到本机中的authorized_keys文件中
(2).设置ssh无密码登陆时,最好把.ssh文件夹以及该文件夹下的所有文件设置为rwx------(即700)权限,如果你在无密码登陆过程中发生失败,则需要检查文件权限问题。
chmod 700 -vR ~/.ssh
如果有同学觉得上述步骤麻烦,可以将一下脚步拷贝至本机,然后执行就ok了。
mkdir ~/.ssh;cd ~/.ssh;ssh-keygen -t dsa -P '' -f id_dsa;touch authorized_keys;more id_dsa.pub >> authorized_keys;chmod 700 -vR ~/.ssh
eg:
在A主机通过ssh方式登录到B主机:
ssh 用户名@目的主机地址
Eg:ssh chenpeng@192.168.8.21
当A主机的用户user1同样以user1身份登陆到B主机时(其实是巧合,A主机的登陆用户和B主机的用户名称相同),可以简写成:ssh 主机名
Eg:ssh chenpeng@192.168.8.21 <==>ssh bigdata-namenode
注:bigdata-namenode为主机名,所对应的ip地址为:192.168.8.21
主机名和主机ip地址的映射关系在/etc/hosts文件中设置
注,在调用脚本时,必须写全该脚本所在的详细路径
在A主机通过ssh方式登录到B主机后执行相应的命令或者脚本:
ssh 用户名@目的主机地址 ‘xxxxx’
注意:要执行的命令用单引号’ ’扩起来,引号扩起来的命令要和前面的内容写在一行,不能换行。
Eg:
#登陆到192.168.8.21主机上执行如下操作:启动redis和webserver
#启动redis数据库
ssh chenpeng@192.168.8.21 '/usr/local/redis/redis-cli shutdown;/usr/local/redis/redis-server /etc/redis/redis.conf'
#tomcat的关闭和启动不能放在一起,要分开ssh登陆执行,否则会报错
ssh chenpeng@192.168.8.21 '/opt/apache-tomcat-6.0.37/bin/shutdown.sh'
ssh chenpeng@192.168.8.21 '/opt/apache-tomcat-6.0.37/bin/startup.sh'