ssh-keygen

在这里可以讨论服务器安全相关技术

版主: jvip_chen

回复
头像
jvip_chen
社区版主
社区版主
帖子: 195
注册时间: 2019年 1月 5日 13:36 星期六

ssh-keygen

帖子 jvip_chen »

ssh-keygen用来生成ssh公钥认证所需的公钥和私钥文件。

ssh秘钥登录特点:1.安全;2.免输密码。
对于安全级别较高的服务器,建议配好ssh登录后禁掉密码登录。
缺点:略繁琐。如果你的只是临时登录一次,那么还是密码吧。

一、生成秘钥
秘钥对需要在你自己的机器上生成,然后把公钥放到服务器相应用户的~/.ssh目录

执行下面命令,默认生成位置是~/.ssh

ssh-keygen
系统会询问你文件名和秘钥密码,可以一路回车过去,会生成两个文件:

id_rsa 私钥
id_rsa.pub 公钥
默认使用rsa算法,你也可以用比较详细的指令,如

代码: 全选

ssh-keygen -t rsa -b 1024 -f yourkeyname -C "备注"
参数 解释
-b 采用长度1024bit的密钥对,b=bits,最长4096,不过没啥必要
-t rsa 采用rsa加密方式,t=type
-f 生成文件名,f=output_keyfiles
-C 备注,C=comment
更多参数可运行 man ssh-keygen

二、在服务器上安装秘钥
把上一步生成的公钥发送到服务器(scp,FillZilla等)上,然后在服务器上执行下面命令

代码: 全选

cat id_rsa.pub >> ~/.ssh/authorized_keys
如此便完成了公钥安装,有个小坑值得一提:authenrized_keys的权限必须是600或更小,否则会连接失败。
保险起见,执行下面命令

代码: 全选

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
另外,.ssh目录的owner必须是ssh登录用户,不能是root

服务器ssh配置
修改服务器上的ssh配置文件,位置:/etc/ssh/sshd_config

代码: 全选

RSAAuthentication yes
PubkeyAuthentication yes

PermitRootLogin no //禁止root登录
PasswordAuthentication yes //允许密码登录,根据你的情况设置
然后重启ssh服务

代码: 全选

service sshd restart
三、连接服务器
方法1: 直接ssh

代码: 全选

ssh -i ~/.ssh/id_rsa -p 22 user@yourservername
方法2(推荐):修改~/.ssh/config

代码: 全选

Host server_alias(你的服务器别名)
	HostName test.com/192.168.1.1(域名或IP)
	Port 22
	User user
	Identifier id_rsa
保存后,登录时只需执行

代码: 全选

ssh server_alias
多个服务器另起一行续写就行了,就是这么简单!
回复