标签: authorized-keys

如果该目录尚不存在,如何使用 ssh 将文件转换为远程 Linux 目录中的文件?

我正在尝试将公共 id_rsa.pub 文件从我的 Mac 发送到 Linux 服务器上我的主目录中的 ~/.ssh/authorized_keys 目录,这样我就可以访问而无需每次登录。

从我的 Mac 终端,我使用这个命令:

cat ~/.ssh/id_rsa.pub | ssh username@remoteserver 'cat >> ~/.ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)

如果远程 ~/.ssh 目录已经存在,则此方法有效,否则无效。在这种情况下,我必须先登录远程服务器,创建 .ssh 目录,然后注销,然后运行上述命令。之后,我可以在不登录的情况下通过 ssh 连接到远程服务器。

我需要为几十台服务器执行此操作,所以我想知道是否有一种方法可以修改上述命令以创建远程 .ssh 目录(如果它尚不存在)。

谢谢,

道格

ssh authorized-keys

11
推荐指数
1
解决办法
1141
查看次数

没有密码的 SSH 不适用于用户 postgres

我尝试手动将公钥添加到authorized_keys 和authorized_keys2。我还仔细检查了 .ssh (700) 和 authorized_keys (644) 的权限。我可以使用另一个用户(服务器用户)在同一台机器上无需密码登录。

这是 ssh -vvv 的输出:

ssh postgres@java7 -vvv
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to java7 [192.168.120.28] port 22.
debug1: Connection established.
debug1: identity file /home/informix/.ssh/identity type -1
debug3: Not a RSA1 key file /home/informix/.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
debug3: key_read: missing whitespace …
Run Code Online (Sandbox Code Playgroud)

ssh postgresql authorized-keys

5
推荐指数
1
解决办法
4968
查看次数

SSH:authorized_keys 中 no-pty 登录选项的影响

我的行为感到困惑restrict或者no-pty预先考虑的关键登录选项~/.ssh/authorized_keys

对于给定的密钥,我打算阻止任何交互,除了启动到特定本地端口的 SSH 隧道:

restrict,permitopen="localhost:80" ssh-rsa AAAAB3NzaC1yc2EAAA[...]3c7rmJT5/ tunnel@a.example.com
Run Code Online (Sandbox Code Playgroud)

实际效果是用对应的私钥识别我可以创建隧道,但显然也可以执行任意命令

tunnel@a $ ssh -i tunnel_rsa user@b.example.com

PTY allocation request failed on channel 0
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-64-generic x86_64)

[...]

You have new mail.

ls .ssh/
authorized_keys
id_rsa
id_rsa.pub
known_hosts
Run Code Online (Sandbox Code Playgroud)

注意PTY allocation request failed on channel 0会话开始时的消息(这表明登录选项会产生一些效果)和ls .ssh/带有它的输出的命令。

没有提示,但这不是我打算做的。有人可以对此有所了解吗?另外,将给定密钥限制为仅创建隧道的首选方法是什么?

更新

restrict隧道是不是真的工作:

$ curl localhost:8080
curl: (52) Empty reply from server
Run Code Online (Sandbox Code Playgroud)

或使用 …

security ssh openssh ssh-tunnel authorized-keys

5
推荐指数
1
解决办法
6767
查看次数

在 /etc/shadow 中编写“空”密码脚本

我编写了一个脚本来在 Linux 服务器(Slackware 14.0)上添加 CVS 和 SVN 用户。如果需要,此脚本会创建用户,并从现有 shell 帐户复制用户的 SSH 密钥或生成新的 SSH 密钥。

需要明确的是,这些帐户是专门用于 SVN 或 CVS 的。因此,条目开头/home/${username}/.ssh/authorized_keys为(以 CVS 为例):

command="/usr/bin/cvs server",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa ....etc...etc...etc...
Run Code Online (Sandbox Code Playgroud)

这些用户永远不会被允许进行实际的 shell 访问 - 他们纯粹是为了通过 SSH 提供对我们的源存储库的访问。

我的问题是,当我添加新用户时,他们/etc/shadow默认会得到一个空密码。看起来像:

paddycvs:!:15679:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

如果我将影子文件保留为原样(带有!),SSH 身份验证将失败。要启用 SSH,我必须首先passwd以新用户身份运行并输入一些内容。

我这样做有两个问题。首先,它需要用户输入,而我在此脚本中不允许这样做。其次,它可能允许用户在物理终端登录(如果他们有物理访问权限,他们可能会这样做,并且知道秘密密码 - 好吧,所以这不太可能)。

我通常阻止用户登录的方法是将他们的 shell 设置为/bin/false,但如果我这样做,那么 SSH 也不起作用!

有人对编写这个脚本有建议吗?我应该简单地使用sed或其他东西并将影子文件中的相关行替换为预设的加密秘密密码字符串吗?或者,还有更好的方法?

干杯=)

linux ssh passwords authorized-keys slackware

3
推荐指数
1
解决办法
2万
查看次数

为什么 SSH 不尊重我的授权密钥?

我家里有 2 台笔记本电脑,都运行 Ubuntu 12.04(台式机),并且都使用相同的 NetGear wifi 路由器。我在其中一台机器上使用了一种称为“MAC 绑定”的技术,以便路由器在每次尝试连接到 Internet 时始终为其分配相同的 192.168.1.52 IP 地址。(无关:MAC 绑定只是意味着将路由器配置为始终将特定 MAC 地址绑定到特定 IP。

所以现在,我有 1 台笔记本电脑总是被分配一个在 192.168.1.1 到 192.168.1.50 范围内的随机 IP,还有 1 台笔记本电脑(我的“构建服务器”)总是被分配 192.168.1.52。

我正在尝试编写一些 bash 脚本,我将在“客户端”笔记本电脑(随机 IP 机器)上运行该脚本,该脚本将ssh进入构建服务器(192.169.1.52 机器);因此,构建服务器必须从我的 LAN 内部拥有一个“专用”IP。我不想明确地为这些 bash 脚本提供密码,所以我按照本文中的说明在这里生成了 SSH 密钥。具体来说,我:

  1. 在我的客户端笔记本电脑上生成 SSH 密钥(生成id_rsa.pub文件)
  2. scpid_rsa.pub文件cat放入我的构建服务器,并将它放入~/.ssh/authorized_keys文件中。我验证了我的客户端笔记本电脑的 SSH 密钥现在存在authorized_keys于构建服务器上的文件中。
  3. 我关闭了客户端笔记本电脑上的终端,然后重新打开了一个新的终端,只是为了更好的措施(以防 Linux 需要它来重新启动任何东西等)
  4. 然后我尝试通过 SSH 连接到构建服务器,但仍然提示输入密码!

这里发生了什么?为什么我的构建服务器上的 SSH 不接受来自我的客户端笔记本电脑的授权密钥?我是否需要重新启动构建服务器上的任何内容(sshd等)?我错过了这里的任何关键步骤吗?如何开始故障排除?提前致谢!

更新 …

linux ssh ssh-keys authorized-keys ubuntu-12.04

3
推荐指数
2
解决办法
8002
查看次数