linux ssh key 生成ssh key
各位老铁们,大家好,今天由我来为大家分享linux ssh key,以及生成ssh key的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
Linux:VPS安装OS时,选项中的ssh key起什么作用
ssh用于加密远程登陆,基于非对称加密(加密和解密用的密码/秘钥不一样),就是一个公钥(pub key)和一个私钥(sec key)。其中公钥用于加密,私钥用于解密。公钥可以公开。想向你发送信息的人必须安装你的公钥,数据加密后利用网络传输,这样你就可以用私钥解密。如果你们互相发送信息,得交换双方的公钥。ssh使用秘钥法登陆时需要下载服务器的公钥,以及上传自己的公钥。以保证数据上传和下载不被第三方阅读。
私钥可以对数据“签名”得到签名文件,所有持有公钥的人可以利用公钥对签名文件和数据进行验算得知数据有没有被修改过。
如何使用SSH密钥方式登录Linux
我们一般使用 PuTTY等 SSH客户端来远程管理 Linux服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH的端口设置为默认的 22以外的端口,或者禁用 root账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root账户从远程登录——那就是通过密钥方式登录。
密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。
下面来讲解如何在 Linux服务器上制作密钥对,将公钥添加给账户,设置 SSH,最后通过客户端登录。
1.制作密钥对
首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
[root@host~]$ ssh-keygen<==建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):<==按 Enter
Created directory'/root/.ssh'.
Enter passphrase(empty for no passphrase):<==输入密钥锁码,或直接按 Enter留空
Enter same passphrase again:<==再输入一遍密钥锁码
Your identification has been saved in/root/.ssh/id_rsa.<==私钥
Your public key has been saved in/root/.ssh/id_rsa.pub.<==公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。
现在,在 root用户的家目录中生成了一个.ssh的隐藏目录,内含两个密钥文件。id_rsa为私钥,id_rsa.pub为公钥。
2.在服务器上安装公钥
键入以下命令,在服务器上安装公钥:
[root@host~]$ cd.ssh
[root@host.ssh]$ cat id_rsa.pub>> authorized_keys
如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
[root@host.ssh]$ chmod 600 authorized_keys
[root@host.ssh]$ chmod 700~/.ssh
3.设置 SSH,打开密钥登录功能
编辑/etc/ssh/sshd_config文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
另外,请留意 root用户能否通过 SSH登录:
PermitRootLogin yes
当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:
PasswordAuthentication no
最后,重启 SSH服务:
[root@host.ssh]$ service sshd restart
4.将私钥下载到客户端,然后转换为 PuTTY能使用的格式
使用 WinSCP、SFTP等工具将私钥文件 id_rsa下载到客户端机器上。然后打开 PuTTYGen,单击 Actions中的 Load按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。
载入成功后,PuTTYGen会显示密钥相关的信息。在 Key comment中键入对密钥的说明信息,然后单击 Save private key按钮即可将私钥文件存放为 PuTTY能使用的格式。
今后,当你使用 PuTTY登录时,可以在左侧的 Connection-> SSH-> Auth中的 Private key file for authentication:处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。
为Linux系统的VPS服务器开启SSH密钥登录的方法
为了vps的安全,我开启了vps的ssh秘钥登陆设置,通过goole搜索资料,操作成功。以下为操作记录。这里假设以root身份,vps的ip为192.168.0.1
第一步:产生秘钥即keys
基本上vps都是ssh密码登陆,首先是产生秘钥,分为公钥和私钥(public key和private key),公钥是放到vps上的,私钥放到自己这里,用于自己远程登录用的,产生秘钥方法有多种
第一种最简单,即通过vps自身产生秘钥
代码如下:
#ssh-keygen-t rsa//这里同是产生公钥和私钥
以下为输入命令后产生的输出:
代码如下:
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa)://这里表示秘钥存放地点,直接回车
Created directory'/root/.ssh'.//默认创建/root/.ssh以保存秘钥
Enter passphrase(empty for no passphrase)://输入密钥密码,可以直接回车
Enter same passphrase again://重复密钥密码,可以直接回车
Your identification has been saved in/root/.ssh/id_rsa.//提示公钥和私钥已经存放在/root/.ssh/目录下
Your public key has been saved in/root/.ssh/id_rsa.pub.
#cd/root/.ssh/
# ls
id_rsa.pub id_rsa//可以看到两个秘钥,将这两个保存好,将私钥拷贝到本地
#mv id_rsa.pub authorized_keys//将公钥改名为authorized_keys
#chmod 600/root/.ssh/authorized_keys//修改秘钥的权限,600表示属主有rw权限
当然如果本地自己是用linux则生成的秘钥,要将公钥拷贝到vps上,并修改名字和权限
#scp id_rsa.pub root@192.168.10.1:/root/.ssh
#mv id_rsa.pub authorized_keys//这里是改名字,是在/root/.ssh目录下操作
第二种方法
用xshell产生秘钥。这里强烈推荐xshell+xftp,十分好用,可以同是管理多个vps,支持多个shell窗口
第二步:用秘钥登陆
因为我们弄好后要测试ssh秘钥登陆,看是否设置成功,如果没成功还能密码登陆,所以修改后一定要测试下,对于vps提供商提供了console的,倒是可以随意整,毕竟还有console可以用,倘若没有,建议先测试,我就是忘了添加另外一个管理员账户,而自己又禁止了root远程登登陆,导致所有客户端都登陆不上,还好我有console,修改sshd_config配置,允许root远程登录,才搞定了,以下相当于登陆测试。
首先可以用winscp将公钥拷贝到远程的linux服务器上即vps,记得名字要改成authorized_keys
自己用私钥和vps上的公钥配对,配对成功就登陆了。
必须修改/etc/ssh/sshd_config文件,将RSAAuthentication和 PubkeyAuthentication后面的值都改成yes,保存
代码如下:
#/etc/init.d/sshd restart//再重启sshd服务,我的是centos
用秘钥登陆也有很多种,看你喜欢用什么客户端了,
第一种,是用putty登陆,用putty登陆有点要注意的是要转换秘钥,大家可以参考军哥教程。特别要注意问题就是,putty官网的puttygen转换后的秘钥有问题,登陆时候会出现“Server refused our key”错误。
解决的办法是用winscp官网下载的winscp安装程序自带的puttygen来转换秘钥,就可以正常登陆了。
我的转载的putty,winscp教程,适合新手
第二种,用xshell登陆。我是用xshell,大家可以参考军哥教程
第三种,用linux登陆vps
代码如下:
#chmod 600 id_rsa//将本地的私钥改成rw权限
#ssh root@192.168.0.1/root/id_rsa//id_rsa为私钥,根据自己的私钥路径写
三种登陆过程可能都会提示你填写秘钥密码,填上就可以登录成功了。
测试ssh秘钥登陆成功后,就可以设置一些更安全的配置,如
代码如下:
PasswordAuthentication no//表示禁止密码口令登陆
permitrootlogin no//表示禁止root远程登录