标签: ssh

为什么 ssh-copy-id 需要私钥文件

这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)

我不明白这种行为。

对我来说有两种情况:

  1. 我发送我自己的公钥
  2. 我发送同事的公钥。

第一种情况很少见。如果我可以连接到服务器,服务器已经有了我的公钥。所以ssh-copy-id在这种情况下我不需要。

第二种情况很常见。我授予其他用户访问权限。但我没有他或她的私钥。因此,这种行为使 ssh-copy-id 在第二种情况下无用。

请解释一下为什么ssh-copy-id需要私钥文件?

ssh ssh-keys

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

OpenSSH 客户端不断发送 RSA 密钥而不是 ECDSA

客户端是 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)

ssh ssh-keys

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

在符合 PCI-DSS 的 Linux 集群中审计

我熟悉配置 Linux 服务器以符合PCI-DSS 3.2 的一些更常见的方法,至少符合SAQ A的要求。一个常见的问题是要求 8.5,它要求:

通用用户 ID 和帐户被禁用或删除

这包括 root 用户,显然不能被禁用,因此需要“补偿控制”(在 PCI-DSS 的术语中)。一个常见的配方是以下的一些变体:

  • 禁用以 root 身份登录;
  • 需要登录ssh才能使用 SSH 密钥;
  • 用于sudo获取root;
  • pam_loginuid一旦用户有root,安装记录登录用户ID;和
  • 安装和配置auditd以记录 root 操作和登录用户 ID。

但是,如果我今天要处理,它不是我要保护的单一机器:它是一个小型集群(目前有 10 台机器),并且能够在机器之间ssh(和scp文件)进行(和文件)真的非常有用。作为非 root 用户必须这样做将是一个真正的痛苦:几乎总是你需要的文件只能被 root 读取,并且需要放在一些只有 root 可以写入的地方。

我想要做的是允许ssh在机器之间作为 root,使用服务器上存在的 SSH 密钥。这在块中使用命令很容易。我不太担心允许破坏一台机器的人控制整个集群的安全隐患:这些机器非常相似,如果他们设法破坏一台机器,他们可能可以使用相同的过程来访问其余的./etc/ssh/sshd_configPermitRootLoginMatch Address

但是,如果我这样做,我将失去跟踪谁在运行什么命令的能力,因为当我ssh到另一台机器时,没有登录 UID 不再附加到进程。PCI-DSS 中的补偿控制需要“满足原始 PCI DSS 要求的意图和严格性”,并且要求 8.5 的意图被声明为使“跟踪系统访问和活动到个人”成为可能。在不保留登录 UID 的情况下,我们不再为允许 root 用户存在提供补偿控制。 …

linux cluster ssh root pci-dss

5
推荐指数
0
解决办法
960
查看次数

rsync - 无法解释的错误

我正在使用这样的脚本:

rsync -avu --delete --progress user@host:~/backup .
Run Code Online (Sandbox Code Playgroud)

每次过一段时间后,都会收到此错误:

rsync: connection unexpectedly closed (10251754 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [receiver=3.1.0]
rsync: connection unexpectedly closed (45482 bytes received so far)  [generator]
rsync error: unexplained error (code 255) at io.c(226) [generator=3.1.0]

# generator = Debian 5, rsync  version 3.0.3  protocol version 30 (Generator[A])
# receiver = Ubuntu 14.04, rsync  version 3.1.0  protocol version 31 (Receiver[A])
Run Code Online (Sandbox Code Playgroud)

我有十多年的经验rsync,我尝试了所有方法,但我无法弄清楚为什么会发生这种情况。

双方:我在日志中没有错误,在 …

networking ssh rsync

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

在 debian 8 (jessie) systemd 上配置多个 sshd 实例

我想在 debian 8 上运行两个 sshd 守护进程(使用 openssh),一个用于管理,一个用于 sftp。

这曾经在 debian 7 中很容易,但在 systemd 中则更加困难。

到目前为止,我已经创建了sshd_config_second和ssh_config_second.

我将如何为sshd_second.service守护进程创建服务文件并启动守护进程?

我查看了 sshd.service 但这没有引用该sshd_config文件。我在哪里向守护程序提供这些配置文件?

更新:

我从 RHEL7 遵循了这个并成功了:

https://access.redhat.com/solutions/1166283

debian ssh sftp debian-jessie

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

隧道关闭。packet_write_wait:连接到未知端口 0:管道损坏

你好社区几天我在保持连接到我执行到 VPS的ssh 隧道时遇到问题。2 到 4 分钟后,我收到此错误:隧道已关闭。packet_write_wait:连接到未知端口 0:管道损坏。我一直在论坛上阅读,但仍然找不到解决方案,这些是我的配置文件。值得一提的是,我通过代理(Squid)访问互联网。

在我的SSH 服务器(/etc/ssh/sshd_config) 上添加以下行:

ClientAliveInterval 60
ClientAliveCountMax 5
TCPKeepAlive no
Run Code Online (Sandbox Code Playgroud)

在我的SSH 客户端(~/.ssh/config) 上:

Host myhost
    User root
    ProxyCommand proxytunnel -p proxy.example.com:3128 -P userproxy:passwordproxy -d dominiovps.com:443 -v -H "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)" 
    ServerAliveInterval 60
    ServerAliveCountMax 5
    TCPKeepAlive no
Run Code Online (Sandbox Code Playgroud)

ssh ssh-tunnel

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

登录 FreeBSD ssh 时使用 bash shell

我正在寻找一种方法来确保我的命令在某些使用 csh 作为默认 shell 的 FreeBSD 11 机器上由 bash 执行。

以下是我在 Linux CentOS / Debian / MacOS X / pfSense 2.3(在 FreeBSD 10.3 上运行)甚至 Windows 10 bash 上运行的代码,但在 FreeBSD 11 上不起作用

cat "/some/filelist" | ssh -i "/home/user/.ssh/some_key" user@freebsd11  'bash -c "while read -r file; do stat -f \"%N;%c;%m\" \"\$file\"; done | sort"'
Run Code Online (Sandbox Code Playgroud)

FreeBSD 11 上前一个命令的输出似乎是一个 csh 错误消息

Unmatched ".
Run Code Online (Sandbox Code Playgroud)

在检查哪个 shell 运行时,似乎是 csh 运行。以下返回“csh”

ssh -i /home/user/.ssh/some_key user@freebsd11 'bash -c "echo $0"'
Run Code Online (Sandbox Code Playgroud)

根据我的理解,BSD 系统不允许更改 shell,除非使用 heredoc,但我不能使用 heredoc 发送 cat "/some/filelist" …

freebsd ssh shell bash bsd

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

无法使用公钥私钥对登录(ssh)

我无法使用公钥私钥对登录。我确实可以使用密码访问。以下是服务器端和客户端的日志。为什么我无法登录?

type=CRYPTO_KEY_USER msg=audit(1481731455.027:102046): user pid=8859 uid=0 auid=0 ses=6158 msg='op=destroy kind=session fp=? direction=both spid=8860 suid=74 rport=59031 laddr=XX.XXX.XX.XXX lport=22  exe="/usr/sbin/sshd" hostname=? addr=YY.YYY.YY.YYY terminal=? res=success'
type=USER_ERR msg=audit(1481731455.028:102047): user pid=8859 uid=0 auid=0 ses=6158 msg='op=PAM:bad_ident acct="?" exe="/usr/sbin/sshd" hostname=YY.YYY.YY.YYY addr=YY.YYY.YY.YYY terminal=ssh res=failed'
type=CRYPTO_KEY_USER msg=audit(1481731455.028:102048): user pid=8859 uid=0 auid=0 ses=6158 msg='op=destroy kind=server fp=6f:21:ce:5c:81:10:5e:63:db:32:54:71:80:bf:99:97 direction=? spid=8859 suid=0  exe="/usr/sbin/sshd" hostname=? addr=YY.YYY.YY.YYY terminal=? res=success'
type=CRYPTO_KEY_USER msg=audit(1481731455.028:102049): user pid=8859 uid=0 auid=0 ses=6158 msg='op=destroy kind=server fp=d7:a6:59:60:99:86:45:95:69:79:bf:ea:8a:fa:0a:46 direction=? spid=8859 suid=0  exe="/usr/sbin/sshd" hostname=? addr=YY.YYY.YY.YYY terminal=? res=success'
type=USER_LOGIN msg=audit(1481731455.028:102050): user pid=8859 uid=0 auid=0 ses=6158 msg='op=login …
Run Code Online (Sandbox Code Playgroud)

linux ssh authentication rsa

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

SSH 什么都不做,不管它得到什么命令行 (Cygwin)

总结: SSH 没有做任何事情。

> ssh user@www@.yserver.com
> ssh oshdfojsfsdof -psd sdfisdfjdsf
Run Code Online (Sandbox Code Playgroud)

(无论你传递给命令行什么都不做。没有输出,没有错误,什么都没有)

完整故事: 我最近安装了 Cygwin,这样我就可以使用 SSH 密钥运行一些 rsync,而不必弄清楚如何在 Windows 上进行设置。我让一切都运行得很好,但后来发现我需要安装 Cygwin 的更多部分才能让 cron 工作。我添加了一些软件包,但不可否认,我没有对我安装的软件包给予应有的关注。

我设置了 cron,第二天早上发现它不起作用。后来进行了大量调试,我意识到 rsync 给了我错误,因为 SSH 命令根本不想成为......好吧...... ssh。就好像我什么都没跑似的。

我很困惑,因为在再次运行 Cygwin 设置并添加其他包之前一切正常。

ssh cygwin

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

如何从对整个文件系统设置的扩展权限恢复对 RHEL 系统的远程访问?

问题原因

我打算使用以下内容为“.hgignore”等隐藏文件添加组写权限:

#密码
/选择
# 须藤 chmod -R g+w .*

问题是 '..' 匹配这个模式,现在整个 RHEL 文件系统都设置了 g+w。眼前的问题如下:

  • /etc/sudoers 需要设置为 440,而不是 460,所以现在用户不能使用 sudo。
  • 某些与上述类似的机制不允许 ssh 访问。(远程 ssh 客户端收到消息“ssh_exchange_identification: Connection closed by remote host”错误)

题

为了重新获得远程登录的能力,需要指导可以物理访问服务器的人如何修复系统。

现在的问题是:什么重要的文件和目录,需要有自己的权限,才能恢复恢复ssh和sudo功能?

关于“关闭重复”的注意事项

问题为什么“chmod -R 777 /”具有破坏性?提供有关递归扩展权限可以产生什么效果的详细说明。此问题旨在回答如何通过 ssh 重新获得远程访问权限的问题,以便可以执行更广泛的恢复和修复。

linux permissions ssh chmod

4
推荐指数
1
解决办法
1861
查看次数