我是Puppet(开源版本)的新手,有一个相对简单的问题。
当我启动一个新主机时,我希望 puppetmaster 将新主机的公共 rsa 密钥添加到 /etc/ssh/ssh_known_hosts,这样更新后的 ssh_known_hosts 文件就可以被 puppet 代理拉下来了。
我试过sshkey资源:
# /etc/puppet/modules/ssh/manifests/client.pp
sshkey { $hostname:
ensure => present,
type => "rsa",
key => $sshrsakey,
}
Run Code Online (Sandbox Code Playgroud)
但是,ssh_known_hosts 似乎并未在 puppetmaster 或代理上进行修改。我的清单在运行时通过了语法验证,puppet parser validate client.pp并且puppet agent --test在代理上运行未报告任何问题。
我是否必须设置存储配置才能使用 sshkey 资源?我喜欢存储配置的功能,但它似乎对我需要的东西来说有点过分,而且似乎增加了很多开销。我的另一个选择是将$sshrsakey事实吐到 a file,但它需要检查公钥是否存在,因此它不会被多次添加。
这还没有发生在我身上。
但让我们假设以下场景:
我将我的公钥复制到服务器,然后禁用 ssh 的密码验证。然后,不知什么原因,服务器上的公钥被破坏,我无法再登录,因为我关闭了密码验证。
我有哪些选项可以重新获得对该服务器的访问权限?
我想知道 PuTTY 密码短语的最短密码长度是多少。这取决于密码短语需要具有的熵量,而这又取决于一次尝试所需的长度,而这又取决于用于加密私钥的算法。
假设 PBKDF2 的设置足够慢,只有 6 个随机字母数字字符在熵上几乎是 36 位,并且需要很长时间才能进行暴力破解。但是,如果加密是微不足道的,那么每秒可能会尝试数十亿次(或并行数万亿次)尝试,我希望至少有 64 位的熵 - 至少 11 个字符。
那么它是什么 - PuTTY 是否使用了像 PBKDF2/bcrypt/scrypt/whatever 这样又好又慢的东西,还是我需要担心确保 passphases 很长?
我正在使用 Ubuntu 12.04 在新的 Web LEMP 服务器上设置安全用户,这是一项艰巨而痛苦的过程。我最初打算设置诸如 vsftpd 或 proftpd 之类的东西,但许多人建议直接使用 SFTP,所以我会这样做。最终,我有一个主要用户(我使用它只是为了防止 root 登录)。我创建了这个新用户,生成了一个公钥对,将公钥上传到用户~/.ssh目录中authorized_key,更改了 SSH 端口号,删除了 root 登录并设置passwordauthentication为 NO,因此用户被迫使用他/她的密钥登录in. 足够简单(尽管在 PC 上工作似乎比我的 OSX/NIX 同行更令人头疼)。
我现在正在尝试创建新用户(为我的 Web 开发人员),这些用户将只拥有 SFTP 访问权限,并将他们的暴露限制在他们负责的 Web 目录中。每个目录具有以下格式:
/var/www/sitename.com/public/
Run Code Online (Sandbox Code Playgroud)
我的头痛现在开始了。创建新用户?简单。添加密码?真的不需要考虑我需要公钥/私钥(而且他们永远不会有 sudo 访问权限)但是可以。然而,我正在努力解决以下问题:
authorized_keys在他们的主目录中创建文件,它将拥有 root 所有者和组权限,并且他们无法登录到服务器。类似地,这些新用户不能自己登录和创建它,嗯,呃,因为他们不允许通过密码登录。(注意:我也在努力设置 sftp 并将它们限制在各自的 Web 目录中,但我想我以后可以自己解决这个问题)。
有什么建议吗?
目前流程是这样的:
#sudo mkdir -p /home/newuser/.ssh #sudo nano /home/newuser/.ssh/authorized_key #(将key复制到一行并保存) #chown -R newuser:newuser /home/newuser #chmod 700 /home/newuser/.ssh #chmod 600 /home/newuser/.ssh/authorized_key
我想这并不是绝对可怕,但是如果我们有大量的开发人员(加上我将要花费我用 SFTP 部分和目录限制来设置他们的时间),这似乎是一个巨大的痛苦。
我在我的一台服务器上(在用户 rob 下)有一个 Bitbucket 存储库的本地副本,我创建了一个脚本,该脚本在 cron 中每小时运行一次,并尝试拉取和更新本地副本。我遇到的问题是hg pull失败,即使当我在 cron 之外遵循相同的程序时它也能正常工作。
我设置了一个以正常方式访问 Bitbucket 的 ssh 密钥(即遵循 Bitbucket 文档中的指南),然后 repo 最初被克隆
cd /home/rob
hg clone ssh://hg@bitbucket.org/robjohncox/tools
Run Code Online (Sandbox Code Playgroud)
更新脚本在/home/rob/bin/update_tools.sh:
#! /bin/bash
cd /home/rob/tools
hg pull >> /tmp/update_tools.log
hg update >> /tmp/update_tools.log
Run Code Online (Sandbox Code Playgroud)
用户 rob 的 crontab 是:
0 * * * * /home/rob/bin/update_tools.sh
Run Code Online (Sandbox Code Playgroud)
一切都非常简单。但是,当作业运行时,我们看到调用hg pull失败并输出
remote: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么会发生这种情况 - 我是否需要采取其他一些步骤,以便在 cron 运行时它可以访问相关的公钥?该update_tools.sh脚本在 shell 中运行良好。
当我们在GitHub 上创建存储库时,我们始终可以使用地址“git@github.com:user/repo”访问它,但它在幕后是如何工作的?
...我的意思是,只有一个 Unix 帐户:“git”,而多个用户使用不同的键和不同的目录使用它......
我在另一篇服务器故障帖子中看到(您如何执行类似于 GitHub 的基于密钥的动态 SSH?)它可能使用命令选项,但它是如何保护的?(它如何限制用户访问他有权访问的文件夹?)
另外,它是如何管理的?它只使用一个authorized_keys-file还是有其他技巧?
对不起,如果这对你来说听起来多余,但相信我不是。我已经尝试了几乎大多数与此问题相关的链接,但到目前为止没有任何效果。我什至尝试了这篇文章二。以下是我迄今为止尝试过的
MindTerm home: /home/waqas/.mindterm/
SSH Server/Alias: 54.191.37.141
Connected to server running SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
Server's hostkey (ssh-rsa) fingerprint:
openssh md5: 95:44:f1:40:07:90:00:2a:7d:9a:1f:49:a1:71:8a:0b
bubblebabble: xilon-segen-tufep-manir-rekad-lucag-fetoz-sover-hyhuh-kafiz-kixox
Run Code Online (Sandbox Code Playgroud)
在此问题之前我做的最后一件事是 2 天前我试图使用此链接在我的客户端上安装 FTP 服务器http://www.krizna.com/ubuntu/setup-ftp-server-on-ubuntu-14 -04-vsftpd/ . 不幸的是,这个链接没有按预期工作,我最终没有成功登录 FTP。今天,当我尝试使用我的密钥对登录时,它给了我错误。
以下是我的 ssh 尝试日志
waqas@waqas-itu:~/Downloads/key$ ssh -v -i test.pem ubuntu@54.191.37.141
OpenSSH_6.0p1 Debian-3ubuntu1.2, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种从身份验证代理中提取公钥的方法。在将密钥添加到 ssh-agent ( ssh-add ~/.ssh/id_rsa)后,我希望能够将公钥写入文件。
ssh-add -l 为我显示指纹,但有没有办法获得完整的公钥?
谢谢你的建议
这ssh-copy-id对于将公钥发送到服务器非常有用。但是如果你现在没有私钥文件,它就会失败。
$ ssh-copy-id -i my_friend_rsa.pub root@example.com
/usr/bin/ssh-copy-id: ERROR: failed to open ID file 'my_friend_rsa': No such file
Run Code Online (Sandbox Code Playgroud)
我不明白这种行为。
对我来说有两种情况:
第一种情况很少见。如果我可以连接到服务器,服务器已经有了我的公钥。所以ssh-copy-id在这种情况下我不需要。
第二种情况很常见。我授予其他用户访问权限。但我没有他或她的私钥。因此,这种行为使 ssh-copy-id 在第二种情况下无用。
请解释一下为什么ssh-copy-id需要私钥文件?
客户端是 Ubuntu 16.04 keychain,服务器是 FreeBSD 10.3。~/.ssh/authorized_keys服务器上只有一个密钥(这个密钥是 ECDSA p521 而不是 RSA),客户端里面有私钥和公钥~/.ssh。问题是客户端不断发送所有可用的 RSA 密钥~/.ssh- 请参阅此详细输出:
OpenSSH_7.2p2 Ubuntu-4, OpenSSL 1.0.2g-fips 1 Mar 2016
debug1: Reading configuration data /home/manuth/.ssh/config
debug1: /home/manuth/.ssh/config line 1: Applying options for r2d2.manuth.life
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to r2d2.manuth.life [103.12.163.90] port 900.
debug1: Connection established.
debug1: identity file /home/manuth/.ssh/dqar type 3
debug1: key_load_public: No such file or directory
debug1: identity file /home/manuth/.ssh/dqar-cert …Run Code Online (Sandbox Code Playgroud)