我有几个用户在 OSX 上使用SmartCVS与我们的 CVS 存储库进行交互。我们使用 cvs :ext:(SSH2) 方法访问存储库,该存储库存储在远程 linux 系统上。我们使用 ssh 密钥身份验证,并要求用户使用密码来加密他们的私钥。
OSX 附带的 ssh-keygen 版本AES-128-CBC用于加密私钥,显然 SmartCVS 使用的任何 ssh 库都不支持解密此密码,因为它会引发错误。如果我使用 PuTTYgen 在 Windows 上生成一个密钥并将该密钥移动到 OSX,则一切正常。PuTTYgen(以及 Linux 上的 ssh-keygen 的大多数版本)使用DES-EDE3-CBC密码,SmartCVS 能够毫无问题地解密。
所以,我的问题是:有没有办法告诉 ssh-keygen 在加密私钥时使用哪种密码?ssh-keygen(1)OSX 上的手册页没有说明能够设置密码类型,但我希望可能有其他方法可以在一代之后转换为另一种密码类型。
是否可以使用代理转发排除所有密钥的转发,特别说明的除外?或者,是否有任何方法可以指定每个会话尝试密钥的顺序?
使用ssh-agent需要管理不同的套接字:https : //superuser.com/questions/357602/use-a-specified-key-from-ssh-agent/401737#comment396923_358604
有没有更容易配置的替代代理?
例如:
Client A --> ssh/agent-forwarding --> Server B --> Server C
|
------> Server D
Run Code Online (Sandbox Code Playgroud)
我想在代理转发中只允许一个键,允许:A -> B -> C,而不是A -> B -> D。或者至少指定尝试密钥的顺序。
(在@jeff-ferland 回答之后为清晰起见进行了编辑。)
我正在尝试使用 SSH 密钥设置从 ServerA(SunOS)到 ServerB(一些带有键盘交互登录的自定义 Linux)的访问权限。作为概念证明,我能够在 2 个虚拟机之间进行。现在在我的现实生活场景中它不起作用。
我在 ServerA 中创建了密钥,将它们复制到 ServerB,在 ServerA、B 上将 .ssh 文件夹修改为 700。
这是我得到的日志。
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: Peer sent proposed langtags, ctos:
debug1: Peer sent proposed langtags, stoc:
debug1: We proposed langtags, ctos: en-US
debug1: We proposed langtags, stoc: en-US
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: dh_gen_key: priv key bits set: 125/256
debug1: bits set: 1039/2048
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent …Run Code Online (Sandbox Code Playgroud) 有没有办法配置SSH来检查多个用户的单个authorized_keys文件?我知道我可以将公钥复制到每个用户的 authorized_keys 文件中,但为了便于管理,我想要一个额外的 authorized_keys 文件供管理员使用,以允许他们登录所有用户(或特定用户组)。
我了解无需输入密码即可登录服务器的“ssh 密钥”的概念,但是,我不了解如何/使用哪些 PEM 密钥文件来登录 EC2 实例。
在 AWS 控制台中,我可以生成或导入 PEM 密钥,但是我在哪里/如何在笔记本电脑上使用此文件登录云实例?
感谢帮助!
我/etc/ssh/sshd_config在 Ubuntu 12.04 测试服务器上推出了一个新的 Puppet。该配置与之前的配置完全相同,只是删除了以下行:
HostKey /etc/ssh/ssh_host_ecdsa_key
Run Code Online (Sandbox Code Playgroud)
我注意到我从那时开始尝试连接到盒子时遇到了很多类似但不同的错误,例如:“ %hostname%的 RSA 主机密钥已更改,相应 IP 地址%ipaddress%的密钥 未更改。 ”
我认为这是因为我的计算机以前默认使用 ECDSA 密钥,而现在不可用。因此,我将该行添加回sshd_config并重新启动了 SSH。
它并没有完全解决这个问题,从那时起我就遇到了不断的问题。我将能够多次连接到服务器,甚至可能连续几天。然后突然间我开始收到主机密钥已更改的错误并且服务器停止接受我的公钥进行身份验证。
似乎总是一旦我弄乱它一段时间并从不同的位置连接,我将突然能够再次连接到我的公钥并且我不再收到关于可能的中间人的错误攻击。
几天前我尝试重新生成所有 3 个主机密钥(删除它们并运行dpkg-reconfigure openssh-server重新生成它们)。正如预期的那样,我必须删除旧密钥并接受新密钥才能连接。我想也许它当时已经解决了,但现在问题又回来了。
/etc/ssh/自从我上次重新生成它们以来,没有修改任何主机密钥——所以可能会导致我经常无法连接,让我的公钥不起作用,然后最终接受新密钥并让一切重新开始正常工作一阵子?
当事情不正常时(当我收到关于主机密钥更改的错误,然后服务器停止接受我的公钥时),没有任何内容写入服务器的/var/log/auth.log. 这让我想到有时它可能会以某种方式击中不同的机器,但我不知道这是怎么可能的,因为 DNS 条目是正确的并且总是返回相同的 IP 地址。
我能够使用 root 用户的公钥设置 ssh 登录,并尝试对非 root 用户应用相同的逻辑。我试图解决这个问题是徒劳的。我在本地机器和远程服务器上都使用 centos。
这是我的远程服务器的 sshd_config 文件的要点,
RSAAuthentication yes
PublicKeyAuthentication yes
AuthorizedKeysFile /etc/ssh/user/authorized_keys
PasswordAuthentication no
UsePAM no
PermitRootLogin without-password
Run Code Online (Sandbox Code Playgroud)
我已将我的授权密钥文件从用户的家中移到 /etc/ssh/user/authorized_keys 中,因为我阅读了有关 centos 中的 home dir 加密的信息。
我还更改了与非 root 用户关联的所有文件/目录的所有权。
不确定我的配置中缺少哪个步骤,因为相同的配置对于 root 远程登录非常有效。
默认情况下,Vagrant 使用在使用 vagrant ssh 登录机器时使用的不安全私钥。
Vagrant 支持通过 private_key_path 指定不同的私钥,但是我不清楚如何最好地将这个密钥与 box 文件一起传递。我发现的教程和网站通常假设用户已将密钥安装在公共位置。
但是,我只想提供一个盒子文件,而无需额外的设置步骤。
我只能使用 vagrant 的标准 ssh 密钥执行此操作吗?
我已经阅读了几篇如何使用 Rsync 和公钥身份验证自动备份文件的文章。它们都非常相似。我刚刚完成了所有设置,一切正常,但是...我刚刚发现一篇文章说它不安全。我做了以下事情:
/var/sites/.ssh文件authorized_keys)。该目录归"user12"from="BACKUP.SERVERS.IP.ADDRESS",command="/root/validate_rsync"我创建了一个文件 /root/validate_rsync ,内容如下:
#!/bin/sh
echo $SSH_ORIGINAL_COMMAND >> /var/log/synchronize-log.log
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\>*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
*\|*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
Run Code Online (Sandbox Code Playgroud)我运行 rsync 命令:
rsync -avzp --del -e "ssh -p 2211" user12@ORIGINAL.SERVERS.IP:/var/sites/photos/ /var/sites/sync/photos
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:文件权限问题/root/validate_rsync。我将文件/root/validate_rsync …
我已经设置了一个GitLab VM,并在其上创建了一个项目。现在我正在尝试使用我的 git 客户端从另一台机器连接到它(Git for Windows v2.7.1 ...也尝试升级到最新版本 2.15.1,但没有变化)。
在 Windows 机器上,我尝试:
git push -u origin --all
The authenticity of host 'localgit.local (10.1.2.3)' can't be established.
ECDSA key fingerprint is SHA256:twmcV7LjBtI9vUsDeFEHeH0lUcBAihWtGye0K9vHCrk.
Are you sure you want to continue connecting (yes/no)? no
Run Code Online (Sandbox Code Playgroud)
我选择“否”是因为当我在虚拟机上仔细检查时,我发现了不同的指纹:
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 7e:e4:4e:7f:47:b0:41:75:2c:45:bd:be:f5:44:77:d7 /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
Run Code Online (Sandbox Code Playgroud)
好的,它是十六进制格式,所以我将其转换为 base64,对吗?
hex: 7ee44e7f47b041752c45bdbef54477d7
base64: fuROf0ewQXUsRb2+9UR31w==
Run Code Online (Sandbox Code Playgroud)
好吧,这不匹配......如果我走另一条路并将该 base64 指纹转换为十六进制并看看它是什么样子怎么办?结果我不能,它是 43 个字符,并且 base64 字符串的长度必须是 4 的倍数。
关于我在这里缺少什么的任何想法?