ssh免密码登陆远程服务器

ssh免密码登陆远程服务器

在使用windows下的cygwin或者在linux下使用Terminal进行远程服务器登陆测试的时候总是会要求输入账号密码,对于此我们可以使用ssh将公钥放在服务器上的方式来实现免密码登陆。

1.创建公钥

#在Terminal输入
ssh-keygen -t rsa

一路回车按确定

#home/XXX/.ssh/该目录下产生了两个文件
id_rsa  id_rsa.pub

id_rsa.pub就是你的公钥,现在将公钥改名为authorized_keys上传至服务器上的.ssh目录下就好了

#方法1
scp ~/.ssh/id_rsa.pub username@hostname:~/.ssh/authorized_keys
#方法2
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

然后就可以使用ssh username@hostname 登陆了。

2.修改默认登陆用户名以及多个ssh配置

但是还是要输入,所以更简单的方式就是修改你本地的配置文件~/.ssh/config 如果没有的话你就自己创建一个吧,这个配置文件主要是设置默认登陆账户的比如:

#统一格式
Host  	别名
	HostName  		主机名
	Port      		端口
	User      		用户名
	IdentityFile	        密钥文件路径

举个例子:config文件:

Host    localhost
	HostName		127.0.0.1
	Port			22
	User			user
	IdentityFile    ~/.ssh/id_rsa.pub

#注意多个ssh账号需要隔行分开
Host    Alice
	HostName    hostname
	Port        port
	User        user

Host    Bob
	HostName    hostname
	Port        port
	User        user

3.权限安全问题

还有个很重要的问题就是权限问题,一般情况下本地ssh文件权限设置为700,而远程服务器上的authorized_keys最好设置成600,这是为了安全考虑。

#修改权限命令路径根据自己的修改一般前面要加sudo 或者使用root账户修改哈
chmod 700 ~/.ssh/
chmod 600 authorized_keys
posted @ 2015-08-10 11:54  UF  阅读(375)  评论(0编辑  收藏  举报