linux sftp 免密码登录,部署密钥实现SFTP免密登录

66b52468c121889b900d4956032f1009.png

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画风不一样啊!别紧张,我们手动调整一下,掐头去尾,捏造加密协议,然后复制进去就可以用了:)

我有多个私钥怎么办

这个还没涉及到,不过网上有很多相关的博客可以看到:)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值