如何优雅地链接ssh

做为一个开发者,常常要面对管理一大堆服务器的状况,对unix类服务器,咱们通常用ssh链接来管理。那么你通常怎么链接ssh,输入密码?弱爆了,既可贵记,又不安全。如今俺们都用证书来链接shell

使用证书来管理链接至少有以下两个好处缓存

  1. 安全,目前生成证书的方式无论是RSA仍是DSA不管从位数上仍是加密方式上都比本身生成的密码安全许多。
  2. 方便,有了证书之后你就不用再记忆密码了,系统会自动使用证书跟服务器接驳,这一过程不须要人工干预

使用证书链接ssh也很是简单,首先你得生成一个证书,在shell中输入以下命令安全

ssh-keygen -t rsa -C joyqi -f my-key-file
  • -t定义的是加密方式,通常有rsadsa两种
  • -C定义的是注释,通常也能够不写
  • -f定义了输出的证书文件名,不须要写后缀,由于生成的证书包含了公钥和私钥两个文件,它会自动帮你加文件名。

咱们执行后能够看到以下结果bash

$ ssh-keygen -t rsa -C joyqi -f my-key-file
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in my-key-file.
Your public key has been saved in my-key-file.pub.
The key fingerprint is:
57:75:20:37:e2:53:29:ef:86:09:8e:1b:47:2b:6f:88 joyqi
The key's randomart image is:
+--[ RSA 2048]----+
|            o *o.|
|           ..*.o |
|            +o   |
|          o. ..  |
|        S+.o +   |
|        +.+ o o  |
|       . B   .   |
|      E o o      |
|         .       |
+-----------------+
$ ls
my-key-file     my-key-file.pub

能够在上面的命令执行完成,咱们已经获得两个文件my-key-filemy-key-file.pub。前者就是你的私钥,是由你本身我的保存的,后者是公钥,你须要把它上传到任何你想用这个私钥来登陆的服务器上。服务器

ok,如今你须要把公钥文件上传到服务器上,通常我建议用scp命令dom

scp my-key-file.pub loginname@yourdomain.com:.

loginnameyourdomain.com分别替换为你的登陆名和服务器地址。上传完后咱们须要告诉服务器,之后处理loginname的登陆时用公钥来验证,如今最后一次用ssh密码登陆你的服务器,并执行以下命令ssh

cat my-key-file.pub >> ~/.ssh/authorized_keys

在后面咱们都用loginname来特指你本身的登陆名,用yourdomain.com来特指你的服务器地址,请自行脑补ide

其中my-key-file.pub是咱们刚刚上传的公钥文件名。如今咱们还要告诉本机,链接yourdomain.com的时候使用my-key-file这个私钥来登陆加密

退出ssh链接,回到本地。将刚才生成的my-key-file文件拷贝到~/.ssh目录下unix

cp my-key-file ~/.ssh/

而后编辑~/.ssh/config文件,若是没有,就建立一个,在其中写入以下配置内容

Host yourdomain.com
     IdentityFile ~/.ssh/my-key-file

很简单吧,一看就懂,根据你的须要自行修改。最后还有一步,别忘了将本地缓存的公钥文件删掉,由于那是你之前没有上传公钥时,缓存的服务器默认公钥,如今你用了本身生成的公钥就得把这个老的记录删掉

打开~/.ssh/known_hosts文件,找到包含yourdomain.com的那一行,将它删掉,而后保存退出

如今,你就能够正常登陆服务器了,输入ssh loginname@yourdomain.com,第一次登陆会出现

The authenticity of host 'yourdomain.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?

这是由于你刚才把公钥删掉了,系统在链接本地没有缓存公钥的服务器时会询问下你,输入yes便可,而后你没输入密码就登入了服务器。怎么样,是否是很方便。

相关文章
相关标签/搜索