无密码ssh有两个组件,用户身份验证和服务器身份验证。我的用户身份验证很好。我已经创建了一个公共私钥对,并将我的公钥放在authorized_keys文件中。我的问题是关于我的本地机器从远程机器获得的公钥,该公钥用于验证我要连接到的远程机器:
如何选择进入本地服务器的已知_主机的远程服务器使用的私钥?
为了省钱,我不断地在云提供商上创建和删除删除虚拟机。不幸的是,取代删除虚拟机的新虚拟机生成了known_hosts中使用的新的公私密钥对
我不想手动输入ssh-keygen-R
请注意,这与之前的公私密钥问题有关,例如ssh远程主机标识已更改,但没有重复!我知道您可以使用ssh-keygen-R手动修复这个问题
图表:
-------------------- -----------------------
| My machine | | Remote Machine |
| - - - - - - - - -| | - - - - - - - - - - |
| Host Public Key |<---host-authentication---| ** Host Private Key |
| (known_hosts) | | |
| - - - - - - - - -| | - - - - - - - - - - |
| User Private Key |----user-authentication-->| User Public Key |
| | | (authorized_hosts) |
-------------------- -----------------------
**:如何更改此部分?
我最后用(这是不安全的)黑客攻击了我的脚本:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <hostname>
-o StrictHostKeyChecking=否:将接受连接到新主机
-o UserKnownHostsFile=/dev/null:将新主机保存到 /dev/null所以每次ssh时,它都是一个新主机
这最初是在中提出的https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh来解决类似的问题。
META:这实际上是SysOps而不是编程,可能属于serverfault或superuser,或者unix。SX。
您没有说明您的虚拟机正在使用哪个SSH服务器,尽管我预计云提供商可能会使用OpenSSH来避免可能的许可证问题。如果这个猜测是正确的,sshd通常将其配置和密钥文件放在/etc/ssh
中,尽管这可以更改。请参阅任何系统或Web上FILES下的手册页,根据SO约定复制在此处:
/这些文件包含主机密钥的私有部分。这些文件应仅由root所有,仅由root可读,其他人不可访问。请注意,如果这些文件是组/全局可访问的,则sshd不会启动。
/etc/ssh/ssh\u host\u dsa\u密钥。pub
/etc/ssh/ssh\u host\u ecdsa\u密钥。pub
/etc/ssh/ssh\u host\u ed25519\u密钥。pub
/etc/ssh/ssh\u host\u rsa\u密钥。pub这些文件包含主机密钥的公共部分。这些文件应该是全局可读的,但只能由root用户写入。其内容应与各自的私人部分相匹配。这些文件实际上没有用于任何用途;它们是为方便用户而提供的,因此可以将其内容复制到已知的主机文件中。这些文件是使用ssh-keygen(1)创建的。
对于协议v2,主机最多可以有四个密钥对:RSA、DSA、ECDSA和ED25519。非常旧的版本只支持RSA和DSA。旧版本不支持ED25519。新版本默认不使用DSA,但确实支持它。代码仍然支持带有ssh_host_key[. pub]
(名称中没有算法)的协议v1,但v1已经过时和损坏,您不应该使用它。
手册页并没有这样说,我可以看到,但实际上几年来,OpenSSH服务器通常会自动生成主机密钥,如果它们在代码或包安装/启动脚本中丢失,那么只删除您不想要的密钥类型可能行不通。您的客户端可能能够控制主机使用哪些受支持的公钥算法;有关OpenSSH的最新版本,请参阅HostKeyAlgorithms下ssh\u配置的手册页。否则,请上载所有支持的密钥类型,或上载所需的密钥类型,并调整sshd\u config文件以不使用其他密钥类型,或为其他密钥类型创建无效但不可写入和不可删除的文件,以便sshd无法使用它们。
旁白:我会颠倒你的图表。主机身份验证始终首先出现,实际上始终是公钥(标准中有其他选项,但没有使用);客户端身份验证通常是第二个,但可以跳过,可以是公钥或密码。
问题内容: 我已经使用Xampp和JetBrain WebStorm运行AngularJS项目。但是它复杂且性能低下,还有其他方法可以运行AngularJS项目吗? 问题答案: 如果您正在运行node.js,则http-server超级简单。 到您的项目文件夹中 是打开浏览器到页面。运行以查看其他选项,例如更改端口号 没有吗? 这些其他的俏皮话,如果你没有可能会更容易/安装。 例如,大多数系统上都
我们最近将一些数据移植到MongoDB,现在正在考虑运行日常备份,最好是从cron作业,并将其中一个备份恢复到辅助mongo数据库。 我们的系统设置如下: 服务器1:开发mongo数据库 服务器2:两个mongo数据库,一个用于暂存数据,一个用于生产 服务器3:是我们运行所有cron作业/批处理脚本的地方 (我尝试了将用户名和密码连接到主机,但没有将用户名和密码连接到主机) 我收到以下信息: Mo
问题内容: 我正在尝试建立一个PHP网站,并且想要测试我的PHP文件而不将其上传到主机。在上载它们之前,基本上在我自己的机器上对其进行测试。我怎么做? 问题答案: 安装并运行XAMPP:http : //www.apachefriends.org/en/xampp.html
我无法使用某些连接字符串从C#.NET代码连接到远程PostgreSQL服务器。(我的连接字符串包含基本信息,如主机地址,端口,用户名,密码,数据库名)。 我的连接字符串: 注意:我使用的是.NET程序集 我得到的错误是:
我正在尝试从Dockerfile构建一个docker镜像,需要采取的步骤之一是安装一个依赖项,该依赖项只能通过私有Gitlab存储库获得。这意味着容器需要访问SSH密钥才能进行克隆。我知道这不是最安全的方法,但这只是一个中间容器,一旦运行应用程序所需的所有组件都到位,它将被移除。 问题是,无论我怎么尝试,我都无法让docker中的ssh代理建立连接。我得到: 如果我尝试简单地克隆存储库而不运行,也
1) 我在linux机器上远程运行了我的服务器程序。 2) 然后,我尝试从本地windows机器连接探查器GUI。我拿到配置了。来自服务器的xml由JProfiler生成,并通过GUI导入。当我尝试连接时,我会一直处于“连接状态”。 我能够远程登录到Linux机器的特定端口8849。 有趣的是,当我在Linux机器上关闭服务器时,GUI上的“连接状态”对话框也被关闭。它显示了这个信息。“使用了本机