我想生成一个 ssh 密钥对,但我遇到了两种不同的方法。一种是使用 openssl,另一种是 ssh-keygen。
这两种方法的结果/最终键有什么不同吗?
很快就会将服务器迁移到新数据中心的新硬件上,当然这意味着新 IP。
将 SSH 密钥从原始服务器移动到新服务器以便连接客户端不会收到任何警告或必须再次接受任何内容的正确过程(如果有的话)是什么?
考虑到 IP 正在发生变化,甚至有可能吗?
我必须移动哪些文件?我假设所有 ssh_host_* 文件。
从 RHEL 5 迁移到 Ubuntu 10.04。
我的私钥 ( ~/.ssh/id_rsa) 是一个 1766 字节的文件,但我的公钥 ( ~/.ssh/id_rsa.pub) 只有 396 字节的长度。为什么会有巨大的差异?是因为私钥是使用 AES 加密的吗?AES 密文通常不是与明文长度相同吗?
我无法使用 PuTTy 从我的 Windows 7 计算机连接到使用 SSH RSA 密钥身份验证的新配置的 Debian Squeeze 服务器。
在调试模式下运行 SSH 时出现此错误:
User myuser authorized keys /home/myuser/.ssh/authorized_keys is not a regular file
到目前为止我所做的:
~/.ssh/authorized_keysputtygen.exe并转换为.ppk私钥文件。pageant.exe并确保 Connection->SSH->Auth Authetication 方法已选中“尝试使用 Pageant 进行身份验证”。根据来自 OpenSSH.org的常见问题解答,我将权限更改为以下内容:
drwxr-xr-x 3 root root 4096 Aug 13 14:16 /home
drwxr-xr-x 7 myuser myuser 4096 Aug 17 12:55 /home/myuser
drwx------ 3 …Run Code Online (Sandbox Code Playgroud) 我正在编写远程 rsync 设置的脚本,并且需要将远程服务器添加到本地 known_hosts 文件中,以避免在首次运行脚本时收到以下提示:
无法确定主机 '[hostname] ([IP address])' 的真实性。RSA 密钥指纹是[密钥指纹]。您确定要继续连接吗(是/否)?
根据我可以自动将新主机添加到 known_hosts 吗?我尝试过(使用新的 known_hosts 文件):
ssh-keyscan -H [hostname],[ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [hostname] >> ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我总是提示接受指纹。
当我让 ssh 为我添加这个时,know_hosts 文件中的密钥散列非常不同。
我还应该做些什么来解决这个问题?
backuppc 服务器能够以 root 身份登录远程机器并备份它们,但是如果我以 backuppc 用户身份登录并尝试使用相同的密钥 ssh 进入这些机器,则该密钥将被拒绝,并显示以下调试输出:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /var/lib/BackupPC/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to XXX.XXXXXX.com [XX.XXX.XX.XX] port 222.
debug1: Connection established.
debug1: identity file /var/lib/BackupPC/.ssh/identity type -1
debug1: identity file /var/lib/BackupPC/.ssh/identity-cert type -1
debug3: Not a RSA1 key file /var/lib/BackupPC/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace …Run Code Online (Sandbox Code Playgroud) 我想构建一个服务器(运行 Debian 或 FreeBSD),通过 sshfs 接收来自不同客户端的备份。每个客户端应该能够读取和写入自己的备份数据,但不能读取和写入任何其他客户端的数据。
我有以下想法:每个客户端通过公钥身份验证连接到 backup@backupserver.local。用户备份有一个特殊的 authorized_keys 文件,如下所示:
command="internal-sftp" chroot="/backup/client-1/data" ssh-rsa (key1)
command="internal-sftp" chroot="/backup/client-2/data" ssh-rsa (key2)
command="internal-sftp" chroot="/backup/client-3/data" ssh-rsa (key3)
etc...
Run Code Online (Sandbox Code Playgroud)
这样做的好处是我不需要为每个客户端使用单独的用户,而且我可以轻松地使用脚本自动生成 authorized_keys 文件。
只有一个问题:chroot=...不起作用。OpenSSH 的authorized_keys 文件似乎没有ChrootDirectory 的等效文件(它在/etc/ssh/sshd_config 中工作,无论是全局还是在Match User 块中)。
是否有一种相当简单的方法可以使用 OpenSSH 完成我想要的操作?也许command=...以巧妙的方式使用指令?或者,是否还有其他 SFTP 服务器可以执行我想要的操作?
编辑:为了更清楚我想要实现的目标:我希望多个客户端能够在我的服务器上存储文件。每个客户端都不能看到任何其他客户端的文件。而且我不想让我的服务器有几十个用户帐户,所以我想要一个易于管理的解决方案,让客户共享一个用户帐户,但仍然无法访问彼此的文件。
我们有大约 2500 台 Linux 服务器。我们有一个 Jumpstart 服务器,我们可以从它 SSH 到任何服务器以执行系统管理员相关的任务。我们已经部署了一个私钥,并将匹配的公钥部署到了所有服务器,但这是一个巨大的安全威胁。
我们希望为每台服务器部署不同的密钥,但这会创建大量密钥并使其难以管理。请建议处理许多服务器和密钥的正确方法。
当收到如下消息时,如何查看服务器的密钥?
$ ssh example.com
Warning: the ECDSA host key for 'example' differs from the key for the IP address '10.0.0.2'
Offending key for IP in /Users/louis/.ssh/known_hosts:1
Run Code Online (Sandbox Code Playgroud)
执行此操作时,ssh -v example.com我可以看到debug1: Server host key: ecdsa-sha2-nistp256 SHA256:...,但这与纠正问题后最终存储在known_hosts 中的 ssh-rsa 密钥不同。
我做了什么:
我正在尝试使用私钥连接到我的远程服务器
ssh -i privkey.ppk root@ip
Run Code Online (Sandbox Code Playgroud)
但它返回一个错误。
错误信息:
Load key "privkey.ppk": invalid format
root@ip: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
预期结果:
我应该能够使用 ssh 密钥登录到我的远程服务器。
关键文件内容:
PuTTY-User-Key-File-2: ssh-rsa
Encryption: aes256-cbc
Comment: rsa-key-20181019
Public-Lines: 6
some lines
Private-Lines: 14
some lines
Private-MAC: some letters
Run Code Online (Sandbox Code Playgroud)
操作系统: Ubuntu 18.04
(附: