我有一台运行 Debian 6.0 且安装了 logcheck 的服务器。昨天,我收到了这样一条消息:
Jan 19 19:15:10 hostname sshd[28397]: Authentication tried for root with correct key but not from a permitted host (host=4.red-2-140-77.dynamicip.rima-tde.net, ip=2.140.77.4).
Run Code Online (Sandbox Code Playgroud)
我不知道这是谁,我怀疑他是偶然出现的。
现在,我该怎么办?
我做的第一件事是禁用 ssh 密码身份验证并切换到公钥/私钥。我还检查了authorized_keys 文件,只看到了我的公钥
接下来是什么?
我怎么知道其他人在我的机器上做了什么?
我在 Windows 中有一个私钥,由puttygen.exe. 我用默认选项保存它,工具自动给它一个.ppk扩展名,它看起来像这样:
PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20130627
Public-Lines: 4
AAAAB3NzaC1yc2EAAAABJQAAAIBnvvAhyMs4rdlQd4OdajDw4jIPi6vIjrWjt4l4
5C3wHOSxyQQdtSA8XT3K0rSBnNtZRJTb5mfix67qQe3pHCTMSNsYIaBi8xQJHZRa
RxdY+1VtGnSlEma8KO2We9eDNCGiwrRTUzqvTiGCnzU0pF1MXxu3ObISJcpqv+sQ
1GB0cw==
Private-Lines: 8
AAAA..........
Private-MAC: XXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
现在我需要更改密码,根据文档,这似乎很简单:
puttygen.exe -P key.ppk
Run Code Online (Sandbox Code Playgroud)
但这会弹出一个带有此错误的窗口:
PuTTYgen Error: Couldn't load private key (unable to open file)
Run Code Online (Sandbox Code Playgroud)
我还尝试使用ssh-keygenGit Bash 附带的密码来更改密码:
ssh-keygen.exe -p -f key.ppk
Run Code Online (Sandbox Code Playgroud)
它要求我输入旧密码,但随后它给了我错误Bad passphrase。这不是真的,因为我可以在 中添加密钥pageant.exe,而且我没有输入错误密码...
我还可以尝试更改或删除密码短语吗?
我有两个 ssh 密钥,我试图将它们部署到我的一个仆从。但我似乎无法部署它。它出错了。这是init.sls在支柱:
/xxx/yyy/zzz/id_rsa:
file.managed:
- source: salt://private/id_rsa
/xxx/yyy/zz/id_rsa.pub:
file.managed:
- source: salt://private/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
这是我的init.sls状态:
ssh:
file.managed:
- name: {{ pillar['private'] }}
Run Code Online (Sandbox Code Playgroud)
我一定是做错了什么(显然),但我不确定是什么。有什么建议?
据称,ed25519 密钥在安全性和性能方面优于 RSA。就安全性而言,我知道 4096 位 RSA 密钥在可预见的未来实际上是牢不可破的,所以我不会问这个。
我想了解的是性能差异(就速度而言)。当人们声称 ed25519 密钥更快时,这意味着什么?我是从用户的角度来问的。我考虑了几种可能性:
是哪一个?他们全部?他们都不是?
因此,我不是在问它们之间的数学差异,也不是在询问破解其加密的算法复杂性,也不是在问安全保证。我问的是现实世界用户应用程序中的速度。
我的 ssh 服务器中有一个使用 和 创建的非常受限的--no-create-home用户--shell /bin/false。我知道我可以为用户的公钥定义authorized_keys文件。sshd_configs但是,如何允许该用户进行公钥身份验证,而不需要访问操作系统上的任何文件?
我正在使用一些已启动并正在运行的 Amazon EC2 服务器,我需要通过 SSH 连接到这些服务器。我没有第一次设置服务器时生成的任何密钥(在我到达这里之前很久就有人做了)。没有密钥文件我还能进入服务器吗?
FWIW 到目前为止,我已经尝试了很多方法来将 SSH 连接到盒子中,包括在 EC2 仪表板中生成新的密钥对,但似乎没有任何效果。这个亚马逊 AWS 支持帖子和这个答案似乎表明我运气不好,除非我想为我当前的服务器制作一个 AMI 然后用它来实例化一个全新的 EC2 服务器实例(只是为了生成 .pem 文件那时候)。这真的是我现在进入盒子的唯一方法吗?!
我正在使用两台服务器,都运行 FreeBSD 8.4-RELEASE-p1 和 OpenSSH_6.1p1。ssh_config位于 中的两个服务器的文件/etc/ssh是相同的。两台服务器都配置为允许用户使用 SSH 远程进入被监禁的环境。
作为测试,我使用以下命令在两台服务器上使用 SSH 密钥登录到测试用户的监狱:
ssh -i ~/.ssh/private_key test-user@server.mydomain.com hello
Run Code Online (Sandbox Code Playgroud)
并且这authorized_keys两种情况下的文件都指定了以下要在身份验证后运行的命令,附加到公钥(两台服务器上的权限相同):
command="~/test.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Run Code Online (Sandbox Code Playgroud)
其中test.sh只需执行以下操作:
#!/bin/sh
echo SSH_ORIGINAL_COMMAND = $SSH_ORIGINAL_COMMAND
Run Code Online (Sandbox Code Playgroud)
在一台服务器上,上述sh脚本的输出显示如下:
SSH_ORIGINAL_COMMAND = hello
Run Code Online (Sandbox Code Playgroud)
但是在另一台服务器上,结果似乎没有存储在 SSH_ORIGINAL_COMMAND 中
SSH_ORIGINAL_COMMAND =
Run Code Online (Sandbox Code Playgroud)
每个用户 jail 的相应服务器的行为是相同的。我的问题是 -SSH_ORIGINAL_COMMAND在第二台服务器的情况下,我还需要什么其他配置来允许在身份验证后设置变量?
我使用我的 ssh 密钥有一段时间了。我正在考虑将我的 ssh 密钥对升级为更强的加密,但我不知道我的密钥已注册的所有设备。
是否可以在本地“弃用” SSH 密钥,以便在使用弃用的 SSH 密钥进行身份验证时收到警告?
我想生成一个 ssh 密钥对,但我遇到了两种不同的方法。一种是使用 openssl,另一种是 ssh-keygen。
这两种方法的结果/最终键有什么不同吗?
我正在管理一个 RedHat 服务器,用户使用基于私钥/公钥的身份验证通过 SSH 登录。
我想防止他们意外更改/删除/chmoding 〜/.ssh文件夹的内容。他们中的一些人已经递归地 777-chmod 了他们自己的整个主文件夹,因为“这样更容易与同事共享文件”,结果搬起了石头砸自己的脚。
知道我该如何实现这一目标吗?最好有标准的Linux权限系统。
ssh-keys ×10
ssh ×5
security ×2
amazon-ec2 ×1
debian ×1
deployment ×1
freebsd ×1
jail ×1
linux ×1
performance ×1
permissions ×1
public-key ×1
putty ×1
rsa ×1
saltstack ×1
shell ×1
windows ×1