如何在Mac OS X上轻松管理多个ssh会话


8

在我即将开始的工作中,我将使用SSH访问处理许多服务器。这将是~100-120主机,在大多数主机上具有不同的用户名,我很确定我不记得每个主机域名,更不用说每个主机上的用户名。

是否有适用于Mac OS X的工具(最好是Lion)允许我为每个主机定义会话(在会话中我指的是用户名和一些ssh选项),显示此类会话的列表并自动连接点击/选择?

Answers:


6

我管理或者看到人们管理SSH数据有两种方式:

好'ole,命令行,纯文本,ssh_config文件。

创建一个名为configinside 的文件~/.ssh。您可以通过将全局参数放在任何主机声明之上来指定它们。当我开始使用MacPorts时,我必须明确定义一个默认的SSH私钥,以便在连接时自动使用,所以作为我放置的文件的第一行;

IdentityFile ~/.ssh/id_rsa

为主机定义自定义规则(甚至可以使用*作为通配符)时,它看起来像这样:

Host prod-*
  User jason
  Port 2222
  LocalForward 5901 localhost:5901
  IdentityFile ~/.ssh/work-id_rsa

然后,当我运行时ssh prod-script,所有其余规则将自动应用。


许多不想以如此繁琐的方式手动管理所有东西的人很快找到了JellyfiSSH。(Mac App Store Link。当它停止免费下载时,同样的人也变得非常恼火。)

JellyfiSSH为您提供了几乎可以在命令行或ssh_config文件中指定的所有内容的GUI访问权限。JellyfiSSH只是一个用于组织目的的配置存储应用程序,因为它根据您设置的选项生成命令,并在单击连接时打开一个新的终端窗口,其中包含在命令行上定义的所有选项。JellyfiSSH 不是它自己的终端应用程序。


JellyfiSSH看起来像我正在寻找的应用程序。谢谢!
2011年

仅供参考:man ssh_config终端将提供当前系统安装中可用的OpenSSH SSH客户端配置文件信息。在评论时,这比上面的开发者链接更新。
l --marc l

5

您可以创建文件,Example.command然后使其可执行:chmod 755 Example.command并双击该文件以打开连接:

#!/bin/sh

exec /usr/bin/ssh username@example.com

exit 0

如果您只想使用别名(易于记忆的单词)从命令行连接,可以在〜/ .ssh / config中设置它们

Host foo
HostName some.really.long.hostname.here.com
Port 22
User bigfun

然后您可以使用主机进行连接 foo

ssh foo

或者您可以在shell配置文件中创建函数(〜/ .bashrc或〜/ .zshenv):

s1 () {
    ssh -v username@example.com
}

然后你可以example.com通过s1在命令行输入来连接,它将使用1级详细程度。

最后,您可以使用ssh自动完成,但其语法将取决于您选择的shell。快速谷歌的'ssh自动完成YourShellHere'应该会出现一些例子。

使用密码和OS X Keychain

最重要的是,IMO,是设置ssh使用密码。自从Leopard以来,OS X内置了很好的Keychain集成。

ssh-keygen -t dsa -f ~/.ssh/id_dsa -C "you@exampledomain.com"

cat ~/.ssh/id_dsa.pub | ssh you@host.domain 'cat – >> ~/.ssh/authorized_keys'

(来源:http//www.paosborne.com/blog/?p = 369。

然后当你ssh到一台新机器时,OS X钥匙串会提示你输入ssh密码

有关更全面的说明,另请参见http://www.dribin.org/dave/blog/archives/2007/11/28/ssh_agent_leopard/。文章较旧,但Lion的工作方式相同。

别忘了Dropbox

如果您登录多台计算机,则可以~/.ssh/config通过Dropbox 同步文件。我保持我的~/Dropbox/etc/ssh/config.txt,然后我做:

cd ~/.ssh
ln -s ../Dropbox/etc/ssh/config.txt config

我用〜/ .zshenv做同样的事情:

cd
ln -s Dropbox/etc/zshenv.sh .zshenv

事实上,我将所有shell脚本放在〜/ Dropbox / bin /中,并将其添加到我的$ PATH中,只是为了覆盖我的所有基础。


Dropbox是一个很好的存储shell脚本的地方,我不想在git / GitHub上管理它。谢谢你激发那个“啊哈”的时刻,TJ!
杰森萨拉兹

-2

您可以尝试使用适用于Mac OS X的vSSH应用程序(基于PuTTY)。

  • 管理连接列表(主机,端口,用户名,密码,密钥和许多其他设置)
  • 几乎所有PuTTY都可以
  • 多标签多窗口界面
  • 宏支持(您将脚本作为菜单项进行shell快速访问)
  • 适用于iOS的vSSHSSH控制应用程序的iCloud同步(连接,宏和密钥)

可在Mac AppStore上找到


欢迎来询问不同!如果您是答案中的产品作者,请阅读有关自我推销的帮助中心,并附上免责声明。
grg

1
这实际上如何允许可点击的会话列表?如果您可以编辑一些通用营销并将其集中在手头的确切问题上,它可能会得到更好的反应。
bmike
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.