8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
SSH/SCP/SFTP等工具是很重要的运维工具,为了实现自动化运维,配置密钥以实现免密登录是非常重要的手段。
前面一篇文章讲了如何通过密码登录,这篇文章讲一下如何通过密钥登录。
解释
所谓密钥,是要成对的;比如使用ssh-keygen工具的时候,会生成两个文件:
一个是私钥,一个是公钥。
比如你的本地机器A,要远程登录服务器B。那么私钥放在A上,公钥放在B上。
可以这么理解:私钥是你手上的钥匙;而公钥是一扇门,你把这扇门装在哪个服务器上,那你就可以用你的钥匙进入哪个服务器。
如果是访问外部的服务器,只需要给对方发送公钥就可以了(即让对方在他的服务器上装上你的门)。
密钥的生成
这个就不说了,传统的Linux环境可以用ssh-keygen,
在Windows环境下好像Putty,mobaxterm等远程工具都可以生成。
但是建议还是通过ssh-keygen,生成的密钥比较规范,少点坑。
然后要注意密钥的权限,如果权限太开放的话,sftp甚至会拒绝使用这个密钥:
PS > sftp -i C:private.ppk [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:\private.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "C:\private.ppk": bad permissions
[email protected]'s password:
这种情况下,要么用chmod修改权限(Linux环境下),要么就用其他的工具来使用这个私钥(Windows环境下)。
公钥的部署
我们先看一下常用的登录命令:
$sftp
usage: sftp [-1246aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
[-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
[-o ssh_option] [-P port] [-R num_requests] [-S program]
[-s subsystem | sftp_server] host
sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]
sftp -b batchfile [user@]host
我是习惯使用-i /path/to/private.key来显式指定私钥。
那么公钥在哪里?
我们找到你登录使用的user的根目录:
$ls -a ~
. .bashrc .lesshst .profile .ssh
可以看到一个.ssh文件夹,密钥们就放在这里面。
公钥很简单,全部放进~/.ssh/authorized_keys文件就可以了。但是要注意,多个公钥的话,把后来的公钥的内容追加到这个文件后面去。这个文件长这样:
$cat ~/.ssh/authorized_keys
ssh-rsa 密钥马赛克 [email protected]
ssh-rsa 密钥马赛克
第一个字段是加密方式,第二个字段是密钥内容,第三个字段(可选)登录信息。
有的时候你拿到的公钥可能很奇怪,像这样:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20190515"
密钥马赛克
---- END SSH2 PUBLIC KEY ----
跟上面的~/.ssh/authorized_keys画风不一样啊!别紧张,我们手动调整一下,掐头去尾,捏造加密协议,然后复制进去就可以用了:)
我有多个私钥怎么办
这个还没涉及到,不过网上有很多相关的博客可以看到:)