19

OS X 10.7.4 上现有的 openssh 版本是 SSH-2.0-OpenSSH_5.6,不幸的是,它不符合 PCI 标准。所以,我需要升级它,我一直在尝试用 Homebrew 来升级它。

到目前为止,我所做的是:

brew tap homebrew/dupes
brew install openssh

没问题,一切顺利,现在当我尝试时,which ssh我得到:

/usr/local/bin/ssh

看起来不错,还which sshd给出了:

/usr/local/sbin/sshd

ssh -v正式报告:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011

到现在为止还挺好。但这就是我不擅长的地方。22端口仍然使用OS安装版本,也就是说telnet hostname 22报:

SSH-2.0-OpenSSH_5.6

我试过弄乱 /System/Library/LaunchDaemons/ssh.plist 没有运气。

所以,我的问题是(可能按重要性相反的顺序):

  1. 如何让我的 Homebrew 安装的 openssh 成为监听端口 22 的那个?
  2. 如果我这样做,这会导致与 OS X 或其他软件发生冲突吗?
  3. 首先,我的处理方式是合理的吗?
  4. 我不是在想我应该做的事情吗?
  5. 这是一个糟糕的想法吗?

我对没有通过 PCI 合规性扫描感到沮丧,需要弄清楚这一点,坦率地说,我正在考虑将我服务器上的所有电子商务网站都更改为 stripe.com,但我想弄清楚这一点. 另外,有谁知道openssh是否会在Mountain Lion中升级?

编辑:这是我在 /System/Library/LaunchDaemons/ssh.plist 中尝试的内容:

我只编辑了一行,更改:

<string>/usr/sbin/sshd</string>

<string>/usr/local/sbin/sshd</string>

然后我sudo kill -HUP 1按照下面@the-paul 的建议进行了尝试,并重新启动了 Mac。

从远程远程登录仍然显示SSH-2.0-OpenSSH_5.6

我的整个 ssh.plist 文件现在看起来像这样:http ://pastie.org/private/qnhofuxomawjdypp9wgaq

4

2 回答 2

16
  1. 像这样的守护进程在 OS X 上由 控制,而后者又由和launchd等目录中的文件配置。至少在 Lion 和 Snow Leopard 上,默认 ssh 守护进程由./System/Library/LaunchDaemons//Library/LaunchDaemons/System/Library/LaunchDaemons/ssh.plist

    您可以使用文本编辑器以root身份打开它,并将“ Program”键的值从/usr/libexec/sshd-keygen-wrapper您想要的路径更改;在你的情况下,这可能是/usr/local/sbin/sshd. 然后,您需要更改第一个ProgramArguments字符串,即表示的字符串/usr/sbin/sshd,因为它是launchproxy. 然后,要重新加载,

    sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
    
  2. 我不明白这应该如何导致与正常或行为良好的 OS X 软件发生任何冲突。

  3. 是的,这对我来说似乎是一件非常合理的事情。安全很重要。

  4. 这不是一个非常容易回答的问题。但几乎可以肯定,是的,和其他人一样 :^)

  5. 没有。唯一真正要担心的是,您让 sshd 保持最新的安全性与操作系统一样或更好。如果您知道这个问题所提出的问题,那么我认为这对您来说不是问题。

编辑:更正了我的编辑建议ssh.plist(这次测试了)。

于 2012-05-20T19:37:04.213 回答
1

这就是我所做的。基于以上讨论。在 10.11.6 (El Capitan) 上成功测试

服务器

  1. 编辑/System/Library/LaunchDaemons/ssh.plist以使相应的反映...</p>

    <key>ProgramArguments</key>
        <array>
        <string>/usr/local/sbin/sshd</string>
        <string>-i</string>
    </array>
    
  2. 编辑 shell 脚本/usr/libexec/sshd-keygen-wrapper,使最后一个命令反映以下内容:

    exec /usr/local/sbin/sshd $@
    
  3. 克隆/etc/ssh/目录内容:

    $ sudo cp /etc/ssh/ssh* /usr/local/etc/ssh/
    
  4. 确保可靠的文件所有权和权限:

    $ sudo chmod 755 /usr/local/etc/ssh/
    $ sudo chmod 600 /usr/local/etc/ssh/*_key
    $ sudo chmod 644 /usr/local/etc/ssh/ssh{{,d}_config,*.pub}
    $ sudo chown -R root:wheel /usr/local/etc/ssh/
    
  5. 重新加载 SSH 守护进程:

    $ sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
    $ sudo launchctl   load -w /System/Library/LaunchDaemons/ssh.plist
    

    注意:例如,最后一个条目相当于systemsetup -setremotelogin on或激活系统偏好面板中的共享服务。

  6. 确保从Client升级 OpenSSH :

    $ ssh-audit <Server IP>
    # general
    (gen) banner: SSH-2.0-OpenSSH_7.8
    (gen) software: OpenSSH 7.8
    (gen) compatibility: OpenSSH 6.5+, Dropbear SSH 2013.62+
    (gen) compression: enabled (zlib@openssh.com)
    

客户

  1. 安装 OpenSSH:

    $ brew install openssh
    
  2. 克隆/etc/ssh/目录内容。

  3. 确保可靠的文件所有权和权限。

于 2018-09-09T16:58:09.407 回答