ssh-keygen详解

Chase620
• 阅读 1720

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 

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

本文转自 https://www.jianshu.com/p/dd053c18e5ee,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
ssh 免密码登录 与 密钥公钥原理讲解
前言由于最近频繁需要登录几个服务器,每次登录都需要输入密码,故相对麻烦。由于个人服务器用于实验,故对安全性要求不是很高,故想实现ssh免密登录。通过阅读ssh公钥私钥认证操作及原理(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fliu
Wesley13 Wesley13
3年前
SSH公钥免密登录其他主机
在多台主机之间使用SSH免密登录,假设主机A免密登录主机B:1\.在主机A上生成自己的ssh公钥:root@A~sshkeygentrsa执行上面命令,一路回车,完成后,会在~/.ssh目录下生成2个文件:id\_rsa(私钥)和id\_rsa.pub(公钥)2\.将主机A上生成的公钥
lucien-ma lucien-ma
3年前
Git避免每次都要输入密码,SSH公钥的生成和绑定
设置本机绑定SSH公钥,实现免密码登录在我们平时写完代码提交的时候,每次都要输入账号和密码,很烦很烦,浪费时间,这篇文章的目的就是为了让大家变的更加轻松配置SSH公钥实现免密提交:生成公钥sshkeygentrsa然后在C:\Users\ASUS\.ssh路径下找到idrsa.pub文件将里面的内容复制(ASUS是我当前用户的用户名
Easter79 Easter79
3年前
ssh连接服务器
1.概述ssh是一种网络通信协议,用于计算机之间的加密登录.一般用ssh连接服务器有两种方式:密码认证与密钥认证.密码认证就是通过传统的输入密码的方式登录,密钥认证就是把产生的公钥注册到服务器后,用私钥登录,这样就可以不用每次登录输入密码.特别适合作者这种脑残记不住密码的懒人.2.密码认证密码认证登录直接在终端使用ssh
Stella981 Stella981
3年前
Git配置SSH Key的时候提示密钥无效
错误提示:Keyisinvalid.YoumustsupplyakeyinOpenSSHpublickeyformat翻译:密钥无效。必须提供OpenSSH公钥格式的密钥操作步骤1.生成公钥sshkeygentrsaC"GitHub账号的注册邮箱"2.进入路径vim~/.ssh/i
Stella981 Stella981
3年前
Git使用总结
生成密钥1.打开GitBash,运行  \_sshkeygen  \_2.密钥生成空间\_~/.ssh/id\_rsa  \_(C:/User/.ssh)3.输入密码(不输入增直接回车跳过)4._~/.ssh/id\_rsa.pub_ (公钥), _id\_rsa_ (私钥)下载代码到本地
Stella981 Stella981
3年前
Linux单向免密登录最简配置
前置:两台linux,A和B需求:A免密登录B步骤:root用户登录A输入命令:sshkeygen之后一路按回车完成后进行公钥分发命令:sshcopyidi/root/.ssh/id\_rsa.pubB的IP示例:sshcopyidi/root/.ssh/id\_rsa.pub192.168.1
Stella981 Stella981
3年前
CentOS 6.5 配置 SSH 免密登录
1、生成公钥:sshkeygentrsa然后一直回车即可_:sshkeygentrsaGeneratingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):Created
Stella981 Stella981
3年前
Mac 终端链接远程服务器
直接在终端输入命令: ssh p 服务器端口号 用户名@服务器IP ssh i 秘钥文件 p 服务器端口号 用户名@服务器IP例如: ssh i pubkey_to_linux p 65500 root@192.168.1.18     //带秘钥文件
Stella981 Stella981
3年前
Linux配置SSH免密码登录
CentOS配置SSH免密码登录为例说明:SSH远程登录的安全外壳协议有两种身份认证机制:\用户名密码\密钥登录环境准备host1:192.168.0.10host2:192.168.0.11下面以host1ssh免密码登录到host2为例,进行说明1、在host1主机下生成私钥/公钥对执行如下命