文档章节

SSH 与 SSH-Key

傅易
 傅易
发布于 2016/10/31 23:09
字数 839
阅读 57
收藏 6
点赞 0
评论 0
SSH

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

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

基于口令的安全认证

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

开启口令认证需要在远程主机的配置文件 /etc/ssh/sshd_config 添加:

PasswordAuthentication yes

重启 sshd 使改动生效:

$ /etc/init.d/sshd reload

基于证书的安全认证

这需要用户持有“公钥/私钥对”证书。具体是用户在远程主机存有公钥,本地持有私钥和公钥。

客户端向服务器发出请求。服务器收到请求之后,在用户的主目录下找到该用户的公钥(公钥存放在远程主机的 ~/.ssh/authorized_keys 中,一行一条),对比用户发送过来的公钥。如果一致,服务器用公钥加密“质询”并发送给客户端。客户端收到“质询”后用私钥解密,再发还给服务器。认证结束。

需要生成密钥,使用 ssh-keygen,选加密算法(rsa、dsa),给秘钥命名(可选):

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

然后会提示你输入 passphrase,即私钥密码。这可以加强安全性,避免证书被恶意复制。

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

公钥需复制一份到远程服务器 ~/.ssh/authorized_keys 文件里。

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

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

sshd_config 配置实践

$ vim /etc/ssh/sshd_config

# 是否允许root账户远程登录,为了安全可关闭
PermitRootLogin no

# 是否检查用户的文件系统权限,避免因目录、文件的权限配置错误可能引起信息泄露
StrictModes no

# 是否允许使用证书登录,授权文件路径
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

# 是否允许使用口令登录,为了安全可关闭
PasswordAuthentication no

使用 SSH-Agent 缓存保存密钥口令

默认会在每次使用私钥时请求该口令,你也可以将其加入本地密码库:

$ ssh-add ~/.ssh/id_rsa

这样在本机使用就不会每次输入密码了,减弱了安全性,但增加了便利。

持有多个证书时的使用方法

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

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

觉得麻烦可以配置客户端的 /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 Agent 缓存
$ 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 如例中的 second@mail.com。

© 著作权归作者所有

共有 人打赏支持
傅易
粉丝 23
博文 92
码字总数 52967
作品 0
朝阳
后端工程师
git 在mac上使用git clone时每次需要输入密码的解决方案

Generating a new SSH key and adding it to the ssh-agent MAC WINDOWS LINUX After you've checked for existing SSH keys, you can generate a new SSH key to use for authentication, t......

张宏亮1982 ⋅ 05/13 ⋅ 0

Generating SSH keys

Generating SSH keys MAC WINDOWS LINUX ALL SSH keys are a way to identify trusted computers, without involving passwords. The steps below will walk you through generating an SSH ......

冰珊孤雪 ⋅ 2015/09/06 ⋅ 0

could not load host key: /etc/ssh/ssh_host_rsa_...

#ssh-keygen -t dsa -f /etc/ssh/sshhostdsa_key Generating public/private dsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identificatio......

mj4738 ⋅ 2012/06/22 ⋅ 0

利用Dockerfile文件创建带有sshd服务的centos镜像

1、安装docker并启动docker,不在赘述 2、创建使用Dockerfile安装sshd服务的目录,名字路径自定义 mkdir sshd_centos cd sshd_centos 3、编辑启动sshd服务的脚本文件 vim run.sh内容为 #!/b...

射手Mr吴 ⋅ 2016/07/19 ⋅ 0

could not load host key: /etc/ssh/ssh_host_rsa_key 无法启动ssh的一个解决办法

# /usr/sbin/sshd 系统提示“Could not load host key: /etc/ssh/sshhostkey Could not load host key: /etc/ssh/sshhostrsa_key Could not load host key: /etc/ssh/sshhostdsa_key Disabl......

Mr_sheng ⋅ 2017/11/13 ⋅ 0

openssh如何配置启动sshd问题

安装openssh是自动安装的。运行 sshd start 出现: sshd re-exec requires execution with an absolute path 再运行 /usr/sbin/sshd 出现 Could not load host key: /etc/ssh/sshhostrsa_key......

tngou ⋅ 2012/12/08 ⋅ 5

多个git托管平台同时使用时SSH Key的生成及添加

使用一个邮箱注册多个git代码托管平台,如:GitHub、Gitlab、码云等。在用户端,生成对应平台的的 时,会生成对应的 及 公钥文件(默认的密钥文件名取决于算法,此处默认使用RSA算法加密),...

Anyers ⋅ 06/14 ⋅ 0

linux 配置ssh互信

原文地址:http://blog.chinaunix.net/uid-16979052-id-3568036.html linux配置ssh互信 公钥认证的基本思想: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其...

flash_fish ⋅ 2014/02/26 ⋅ 0

让git push命令不再每次都输入密码 ssh配置_已迁移

检查本机是否有ssh key设置 $ cd ~/.ssh 或cd .ssh 如果没有则提示: No such file or directory 如果有则进入~/.ssh路径下(ls查看当前路径文件,rm * 删除所有文件) 2 1、使用Git Bash生成...

鬼谷子灬 ⋅ 2016/09/22 ⋅ 0

Permission denied (publickey)

问题描述: 执行 git push origin master 提示 : Permission denied (publickey). fatal: Could not read from remote respository. 1 2 查到资料http://stackoverflow.com/questions/1966......

IT达仁 ⋅ 06/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部