随笔 - 128  文章 - 1  trackbacks - 0
<2020年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿

随笔分类

随笔档案

收藏夹

调试技巧

搜索

  •  

最新评论

阅读排行榜

评论排行榜

60天内阅读排行

ssh 提供两种级别的安全认证:

  1. 基于口令的安全认证
  2. 基于密钥的安全认证

基于口令的安全认证

需要知道用户名和密码即可登录,该连接是加密的,但客户端不能确认目标主机是否为“伪造的”,也不能保证口令安全。

远程主机的 /etc/ssh/sshd_config 需配置:

PasswordAuthentication yes 

重启 sshd 使改动生效:

$ /etc/init.d/sshd reload 

基于密钥的安全认证

需要用户持有“公钥/私钥对”,远程服务器持有公钥,本地持有私钥。

客户端向服务器发出请求。服务器收到请求之后,先在用户的主目录下找到该用户的公钥,然后对比用户发送过来的公钥。如果一致,服务器用公钥加密“质询”并发送给客户端。客户端收到“质询”后用私钥解密,再发还给服务器。认证结束。

生成 ssh-key,选加密算法(rsa、dsa),给秘钥命名(可选):

$ ssh-keygen -t rsa -C "name" 

passphrase 是证书口令,以加强安全性,避免证书被恶意复制。

会在 ~.ssh 下生成 id_rsa, id_rsa.pub 两个文件,分别是 私钥/公钥。

公钥需保存到远程服务器 ~/.ssh/authorized_keys 里,私钥由客户端本地留存。

要保证 .sshauthorized_keys 都只有用户自己有写权限。否则验证无效。

$ chmod -R 700 ~/.ssh/ $ chmod 600 ~/.ssh/authorized_keys 

ssh 配置的一些实践

$ vim /etc/ssh/sshd_config  # 禁用root账户登录,非必要,但为了安全性,请配置 PermitRootLogin no  # 是否让 sshd 去检查用户家目录或相关档案的权限数据,这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。例如使用者的 ~/.ssh/ 权限设错时,某些特殊情况下会不许用户登入 StrictModes no  # 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys  # 有了证书登录了,就禁用密码登录吧,安全要紧 PasswordAuthentication no 

持有多个 ssh-key 时的使用方法

简单情况下,通过手动指定私钥文件登录

$ ssh username@hostname -i ~/.ssh/my_id_rsa 

觉得麻烦可以配置客户端的 /etc/ssh/ssh_config

# 其实默认 id_rsa 已经加入私钥路径了,这里只是示范 IdentityFile ~/.ssh/id_rsa # 如果有其他的私钥,再加入其他私钥的路径 IdentityFile ~/.ssh/my_id_rsa 

你也可以使用 SSH Agent,下面以使用 GitHub 为场景简单介绍。

$ ssh-keygen -t rsa -C 'second@mail.com' $ ssh-add ~/.ssh/id_rsa_second 

创建 ~/.ssh/config

# Default github user(first@mail.com) Host github.com HostName github.com User git IdentityFile C:/Users/username/.ssh/id_rsa  # second user(second@mail.com) Host github-second HostName github.com User git IdentityFile C:/Users/username/.ssh/id_rsa_second 

配置完成后,在连接非默认账号的仓库时,远端地址要修改为

git remote add test git@github-second:second/test.git # 原来是 git@github.com:second/test.git # git 根据配置的 user.email 来获取 github 帐号来显示 author 信息,记得将 user.email 改为相应的 email


作者:字母数字或汉字
链接:https://www.jianshu.com/p/fab3252b3192
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted on 2020-10-13 16:29 长戟十三千 阅读(22) 评论(0)  编辑 收藏 引用 所属分类: 环境配置

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理