如何在Mac上安装sshpass?

188

我想要自动化从我的 Mac 登录 ssh。

这确实有一个简单的解决方案:

sshpass -p my_password ssh m_username@hostname

但我的问题是在我的Mac上安装sshpass。


4
为什么要使用sshpass,而不是使用ssh密钥对呢?后者更加安全,并且在进程表中也不会暴露密码。 - alvits
13
在OSX中运行命令ssh-keygen -b 2048,它将生成一对密钥并将它们存储在~/.ssh.中,其中私钥称为id_rsa,公钥称为id_rsa.pub。将id_rsa.pub复制到Linux的目录~/.ssh/中,并将其命名为authorized_keys。从现在开始,当您连接到Linux时,您将不需要密码,而是使用私钥/公钥对进行身份验证。 - alvits
1
只是为了帮助其他可能正在尝试遵循@alvits非常有用的建议的人:1)在您的本地计算机上生成id_rsa文件,2)将id_rsa.pub通过scp复制到服务器的相应文件夹中,如建议所示,并3)在服务器上重命名id_ras.pub文件。 - yuqli
21
以上回答并没有回答楼主的问题。虽然是个不错的替代方案,但并没有解释如何在Mac上安装sshpass。有些情况下,你无法将文件复制到远程系统(我的是嵌入式只读文件系统)。因此,像sshpass这样的工具是进入远程系统的更好方式。 - ChuckB
4
Homebrew开发人员让用户从“随机的GH存储库”安装软件,这会将用户带向更大的风险,因为这些第三方存储库没有得到监督。我也在针对一个只读嵌入式Linux系统。 - Scott Prive
显示剩余7条评论
12个回答

244

2022年更新:很遗憾,Aleks Hudochenkov不再更新他的存储库。在GitHub上有许多其他存储库声称包含sshpass的Homebrew配方。你可以自行决定信任哪一个(如果有的话)。

几年过去了,现在有一个适用于sshpass的合适Homebrew Tap,由Aleks Hudochenkov维护。要从此tap安装sshpass,请运行:

brew install hudochenkov/sshpass/sshpass

点击源代码


24
源代码在哪里?没有了解代码就使用sshpass是很关键的。 - muuvmuuv
12
@muuvmuuv,是的。如果你查看该 tap这个公式,你会发现它从 https://downloads.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz 下载源代码并在本地构建。 - smammy
1
错误:您的CLT不支持macOS 11。我使用的是11.2版本。 - ikreb
3
@kjdion84 这对我很有帮助:sudo rm -rf /Library/Developer/CommandLineToolssudo xcode-select --install - ikreb
2
该存储库已被所有者归档。现在它是只读的,所以我无法请求将其版本更新为最新的sshpass :( - rogerdpack
显示剩余5条评论

192

这里有关于如何安装sshpass的说明:

https://gist.github.com/arunoda/7790979

如果您使用的是Mac操作系统,则需要安装Xcode和命令行工具,然后使用非官方的Homewbrew命令。

curl -L https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb > sshpass.rb && brew install sshpass.rb && rm sshpass.rb

38
2020年我发现这个是最佳答案。 - Mike Pennington
9
很遗憾,对我来说这并没有起作用。错误信息是:调用未进行校验的 sshpass 公式文件下载链接是被禁止的!请使用“brew extract” 或 “brew create” 和 “brew tap-new” 在 GitHub 上创建一个 tap 中的公式文件。请勿使用任意 URL 进行下载。 - Alex
10
2021年更新:curl -L https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb > sshpass.rb && brew install sshpass.rb && rm sshpass.rb - Konstantin Nikolskii
Brew现在有tap了,可以看看其他答案... - rogerdpack
我不需要 Xcode,只用命令行工具就足够了。 - nyg

46

2020 年的另一个选择是这个自制 tap,由 esolitos 维护

brew install esolitos/ipa/sshpass

2
这是唯一真正回答问题的答案。但是有一些担忧 - 一个小型仓库可能会变得不可靠(并且不会立即被注意到)。但这确实是一个答案。建议用户首先尽可能地排除每种可能的用例,因为可能存在其他更简单的答案(例如,如果您正在处理一个不将“authorized_keys”存储在主目录下的Dropbear主机,这就是为什么您的分段公钥被拒绝等)。 - Scott Prive
4
这是2022年我在MacBook Pro M1上的工作。 - shalk

31

以下方法适用于我

curl -O -L  https://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz && tar xvzf sshpass-1.06.tar.gz
cd sshpass-1.06/
./configure
sudo make install

1
请确保您已经安装了Xcode。请搜索如何安装Xcode,这是其中一个链接(https://www.freecodecamp.org/news/install-xcode-command-line-tools/)。 - Tzunghsing David Wong
1
如果你遇到了“SSL证书问题:证书已过期”,请在curl命令中添加--insecure选项。 - nezort11

19
lukesUbuntu从github提供的解决方案适用于我:
只需使用brew
$ brew install http://git.io/sshpass.rb

11
注意:这已经过时,指向了一个旧版本的sshpass。 - Devis L.
1
@DevisLucato 是的,对于最新版本的sshpass,带有sshpass源代码的xcode将引领潮流。https://sourceforge.net/projects/sshpass/ 祝你好运。 - SHI Zhong Ping
4
这已经过时了——这里的评论:https://dev59.com/YFwY5IYBdhLWcg3wwqA5#62623099 更为当前。感谢@smammy。 - babelmonk
Error: Non-checksummed download of sshpass formula file from an arbitrary URL is unsupported! brew extractorbrew createandbrew tap-new to create a formula file in a tap on GitHub instead. - rogerdpack

10
我发现这里列出的大多数答案都已过时。要安装最新版本,我运行了以下命令,并直接从sourceforge.net下载,这是基于此处其他答案的建议。
curl -L https://sourceforge.net/projects/sshpass/files/latest/download -o sshpass.tar.gz && tar xvzf sshpass.tar.gz
cd sshpass-*
./configure
sudo make install

1
configure: error: in /Users/ME/sshpass-1.08: configure: error: C compiler cannot create executables See config.log for more details - Khom Nazid
1
这比其他使用特定且可能过时版本的答案更好。 - ehecatl
运作得像魔法一样。 - Tihomir Mateev

9

请按照以下步骤在 Mac 上安装 sshpass

curl -O -L https://fossies.org/linux/privat/sshpass-1.06.tar.gz && tar xvzf sshpass-1.06.tar.gz

cd sshpass-1.06

./configure

sudo make install

需要更新为/linux/privat/sshpass-1.09.tar.gz - Ambareesh

5

简短回答

为避免依赖于未知的Github仓库(直接或通过Homebrew taps),只需使用MacPorts即可 :)

只需安装MacPorts然后输入:

sudo port install sshpass  

详情/长回答

这个想法是通过MacPorts而不是Homebrew安装sshpass。

您可以在同一台机器上同时安装Homebrew和MacPorts,但要小心,因为有些软件包可在两个来源上获得,在这种情况下,您应该保持一致以避免冲突。

在这种情况下,通常我会优先考虑Homebrew,但是他们不提供sshpass,因为他们明确表示了这一点。

事实上,如果您键入:

brew install sshpass

那么输出结果也将包括这句话:
We won't add sshpass because it makes it too easy for novice SSH users to ruin SSH's security.

如果你真的想使用sshpass,那么在这种情况下MacPorts是唯一的选择。

相关链接

MacPorts项目链接
如何安装MacPorts
MacPorts上sshpass的链接


2
谢谢!我甚至不知道macports还在使用。 :-) 这整个页面是一个闪亮的例子,说明了通过盲目、不灵活的观点和视角如何使安全性变得更糟。所有这些嵌入式Linux用户不得不寻找较少人知道、眼球较少的存储库,因为Homebrew采取了激进的立场。 - Scott Prive
2
是的,@ScottPrive,你说得完全正确:也许他们可以放置大量警告,或者使软件包更难安装(类似于Chrome在您访问具有无效SSL证书的网站时所做的,强制您在屏幕上输入“thisisunsafe”),但他们不应该完全禁止此操作,因为后果将正如你所说的那样。 - Kubuntuer82

5

我刚刚按照这篇文章的说明进行操作,它对我很有帮助。

curl -O -L http://downloads.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gz && tar xvzf sshpass-1.05.tar.gz

//This creates a directory sshpass-1.05

cd sshpass-1.05
./configure
make
sudo make install

谢谢,链接的文章提供了更多的背景信息。 - ehecatl

3

由于简单的原因:

Andy-B-MacBook:~ l.admin$ brew install sshpass
Error: No available formula with the name "sshpass"
We won't add sshpass because it makes it too easy for novice SSH users to
ruin SSH's security.

因此,对于我在Mac上操作curl / configure / install的解决方案行得通。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接