标签: ssh-keys

ssh 命令行指定服务器主机密钥指纹

使用ssh命令行 (OpenSSH),我可以指定服务器的主机密钥指纹吗?

这可以通过 winscp.com 使用(例如) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

我已经阅读了几次手册页,如果我错过了那里的明显内容,我深表歉意。

我不想只是自动接受主机密钥,也不想要求用户更新他们的known_hosts,而是在命令行上以某种形式指定主机密钥。

ssh hostkey public-key ssh-keys

15
推荐指数
1
解决办法
8284
查看次数

Bash 能否告诉我使用哪个 SSH 公钥进行身份验证?

假设我想跟踪我的root用户。他们每个人都有一个唯一的私钥,并且他们的公钥已存储在/root/.ssh/authorized_keys.

鉴于每个用户都使用他们唯一的密钥登录,我如何从 BASH 会话中判断哪个密钥用于进行身份验证?我在登录时尝试查看环境变量,但看不到任何将我的会话与我的公钥相关联的内容。

bash ssh-keys

14
推荐指数
1
解决办法
1935
查看次数

SSH-RSA 公钥中的 User@host

经常出现在公共 ssh-rsa 密钥末尾的 user@host 扮演什么角色?有必要吗?if 在身份验证中是否有任何用途,或者它只是记录谁以及在何处创建密钥以提供信息(对于人类读者)?

rsa public-key ssh-keys

14
推荐指数
1
解决办法
6880
查看次数

AuthorizedKeysFile 行已注释掉,但似乎仍然有效

我正在 Linode 上设置服务器并遵循他们的保护您的服务器指南。

他们建议设置 ssh 密钥对身份验证。我已经将我的公钥上传到服务器,并且密钥对身份验证似乎工作正常,但是如果以下行被注释掉,它如何工作sshd_config

#AuthorizedKeysFile     %h/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

linux ubuntu ssh ssh-keys

14
推荐指数
1
解决办法
2万
查看次数

如何在服务器上为 root 用户设置公共 SSH 密钥?

我正在尝试按照Slicehost Document来设置我的服务器。我到达了 SSH 部分。我是按照写的那样做的,但是当我从 root 注销时,我无法再次访问 root@IP_ADDRESS -p 30000!但我可以访问 user@IP_ADDRESS -p 30000。

那么,问题是,如何为 root 用户设置一个公共 SSH 密钥?

ssh ssh-keys

13
推荐指数
1
解决办法
6万
查看次数

多台机器的一个 ssh 密钥文件,而不是与单台机器配对?

我目前正在实现密钥对登录到我的服务器,如下所示:

从我的本地笔记本电脑生成密钥对:

me@macbook:~ $ ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)

将公钥从笔记本电脑传输到服务器:

me@macbook:$ scp ~/.ssh/id_rsa.pub user@myserver.com:~/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

在服务器中,将公钥添加到authorized_keys 文件中

$ cat id_rsa.pub >> ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

我禁用了 ssh 的密码登录。

问题是,密钥只能在我的笔记本电脑中用于在我的服务器中进行 ssh,看起来它与我的 macbook 笔记本电脑绑定。这意味着,如果我使用另一台计算机,我将无法使用该私钥进行 ssh。最坏的情况,如果我丢失了我的笔记本电脑,我将被锁定,无法通过 ssh 进入。(如果错了请纠正我,我很困惑)

如何使私钥可用于多台机器?(像 AWS ec2,我可以在任何地方使用 .pem 文件 @ 进行 ssh)

谢谢。

以下是authorized_keys文件的内容 在此处输入图片说明

ssh-keys

12
推荐指数
1
解决办法
3万
查看次数

按文件名从 ssh-agent 中选择身份

问题:我有大约 20-30 个ssh-agent身份。大多数服务器拒绝使用 进行身份验证Too many failed authentications,因为 SSH 通常不会让我尝试使用 20 个不同的密钥来登录。

目前,我正在手动为每台主机指定身份文件,使用IdentityFileIdentitiesOnly指令,以便 SSH 只会尝试一个有效的密钥文件。

不幸的是,一旦原始密钥不再可用,这就会停止工作。ssh-add -l向我显示每个密钥文件的正确路径,它们与 中的路径匹配.ssh/config,但它不起作用。显然,SSH 是通过公钥签名而不是文件名来选择身份的,这意味着原始文件必须可用,以便 SSH 可以提取公钥。

这有两个问题:

  • 一旦我拔下拿着钥匙的闪存驱动器,它就会停止工作
  • 它使代理转发无用,因为远程主机上没有密钥文件

当然,我可以从我的身份文件中提取公钥并将它们存储在我的计算机上,以及我通常登录的每台远程计算机上。不过,这看起来不是一个理想的解决方案。

我需要的是可以通过文件名从 ssh-agent 中选择一个身份,以便我可以轻松地使用.ssh/config或传递来选择正确的密钥-i /path/to/original/key,即使是在我通过 SSH 连接的远程主机上。如果我可以“昵称”这些键,这样我什至不必指定完整路径,那就更好了。

ssh ssh-keys ssh-agent

12
推荐指数
1
解决办法
3874
查看次数

关闭对 ssh 密钥的严格检查

每个用户每天创建和销毁 15 个以上的 VM。VM 在公司内部的 OpenStack 云中创建。

每次为新虚拟机分配一个先前已分发的 IP 地址时,用户都会收到可怕的主机密钥验证失败错误。这是因为 ssh 密钥与用户known_hosts文件中的 IP 地址不匹配。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xxxxxxxxxxx
Please contact your system administrator.
Add correct host key …
Run Code Online (Sandbox Code Playgroud)

ssh ssh-keygen ssh-keys openstack

12
推荐指数
3
解决办法
3万
查看次数

在主机之间分发 ssh 公钥

我正在使用 Ansible 设置一些机器,并且需要在它们之间启用无密码连接。我有一个数据库主站和几个从站。对于初始复制,从服务器需要通过 ssh 连接到主服务器并获取数据库的副本。我不确定将所有奴隶公钥动态添加到 mastersauthorized_keys文件的最佳方法是什么。

我已经考虑过将奴隶公钥作为变量提供,然后通过authorized_key模块添加它们。但是我必须维护密钥列表。我正在寻找一种方法,我只需添加另一个主机作为 slaves 组,其余的将自动工作。

有任何想法吗?

更新:

到目前为止,我得到了以下伪代码:

# collect public keys from slave machines
- name: collect slave keys
  {% for host in groups['databases_slave'] %}
     shell: /bin/cat /var/lib/postgresql/.ssh/id_rsa.pub
     register: slave_keys #how to add to an array here?
  {% endfor %}

# Tasks for PostgreSQL master
- name: add slave public key
  sudo: yes
  authorized_key: user=postgres state=present key={{ item }}
  with_items: slave_keys
Run Code Online (Sandbox Code Playgroud)

{% %}仅在模板文件中工作的循环,而不是直接在剧本中工作。有什么办法可以在我的剧本中做到这一点?

provisioning ssh-keys ansible

12
推荐指数
2
解决办法
1万
查看次数

许多服务器的SSH访问网关

通过 Ansible 管理多台服务器,目前超过 90 台,有 3 个 devops。一切都很好,但是现在存在一个巨大的安全问题。每个 devop 都使用自己的本地 ssh 密钥来直接访问服务器。每个 devop 都使用一台笔记本电脑,每台笔记本电脑都可能受到威胁,从而使整个生产服务器网络容易受到攻击。

我正在寻找一种集中管理访问的解决方案,从而阻止对任何给定密钥的访问。与将密钥添加到 bitbucket 或 github 的方式没有什么不同。

在我的头顶上,我认为解决方案是从一台机器(网关)到所需产品服务器的隧道......在传递网关时,请求将获取一个新密钥并用于访问产品服务器。结果是我们只需拒绝对网关的访问,就可以在几秒钟内快速有效地终止对任何 devop 的访问。

在此处输入图片说明

这是好逻辑吗?有没有人已经看到了解决这个问题的解决方案?

ssh ssh-tunnel ssh-keys ansible

12
推荐指数
2
解决办法
3941
查看次数