Как создать ssh-соединение для терминала в Mac OS X?


27

Отстойно каждый раз открывать Терминал и писать полную команду SSH. Как создать ярлык терминала SSH-подключения в Mac OS X 10.6.8 (Snow Leopard)?

У меня также есть собственный порт для подключения.

Ответы:


80

Наиболее * NIX-y ответом является использование возможностей SSH в ваших интересах.

Создайте файл с именем configin ~/.ssh/(папка с именем .sshв вашей домашней папке). Добавьте запись для каждого компьютера, к которому вы хотите подключиться, например:

Host compy
    HostName 98.256.211.12
    Port 90
    User sidney
    IdentityFile ~/.ssh/my_rsa_key
  • HostName может быть либо IP-адрес, либо фактическое имя хоста.
  • Port не является обязательным, если используется порт SSH по умолчанию
  • IdentityFileне является обязательным, если не используется ключ.

    Затем, чтобы подключиться, просто введите

SSH Compy

Если вы используете аутентификацию на основе ключей и сохраняете пароль в цепочке для ключей, вам даже не нужно будет вводить пароль.

Кроме того, вы можете создать файл .command (простой текстовый файл с расширением .command), содержащий командную строку, которую вы используете для подключения к серверу ( ssh compyили ssh -i ~/.ssh/my_rsa_key -p 90 sidney@98.256.211.12). Он откроется в Терминале и запустит эту команду.

Вы также можете использовать New Remote Connection…пункт меню в терминале для подключения. Просто добавьте свой хост под SSH, нажав +кнопку в правом столбце.

Читать ЗДЕСЬ


Я использовал это в сочетании с добавлением моего ключа SSH на сервер. Вы можете нажать свой открытый ключ, например, «ssh-copy-id -i .ssh / id_rsa.pub username: password @ remotehost»
jspooner

10

У вас есть пара вариантов, о которых я могу подумать:

Создать файл .command

В вашем любимом текстовом редакторе создайте и сохраните обычный текстовый файл с помощью команды ssh, например.

ssh -p 23 admin@server.example.com

Назовите файл WHATEVERYOUWANT.command. Затем вам нужно установить .commandфайл с привилегиями выполнения ( chmod 755 /PATH/TO/WHATEVERYOUWANT.command), но теперь у вас есть файл, который при двойном щелчке откроет Терминал и выполнит эту команду.

Создайте псевдонимы для вашей оболочки

Предполагая, что вы используете bash (оболочка по умолчанию в Mac OS X), вы можете добавить псевдонимы .bashrcв свою домашнюю папку.

например. alias sshserver='ssh -p 23 admin@server.example.com'

Вы можете найти больше об псевдонимах в [Wikipedia] ( http://en.wikipedia.org/wiki/Alias_(command) или читая документацию.


5

Есть много способов сделать это. Вот что я делаю:

Открыть настройки терминала

Дублируйте свой профиль на вкладке Настройки со значком шестеренки. Это изменит ваш файл настроек по умолчанию, поэтому измените ваш старый по умолчанию обратно на тот, который был до дублирования.

В ваших новых пользовательских настройках нажмите Тип оболочки в вашей ssh-команде в разделе «Выполнить команду при запуске».

Переименуйте новую настройку из Custom в любую, какую вы хотите.

Теперь вы можете начать сеанс из элементов меню «Новое окно» или «Новая вкладка», и, конечно, сочетание клавиш можно назначить в разделе «Клавиатура и мышь» в «Системных настройках».


3

Вы можете создать AppleScript, который будет запускать команду для вас:

tell application "Terminal"
    do script "ssh server.example.com"
end tell

3

Чтобы быстро открыть ssh-соединение практически из любого места на вашем Mac, сделайте следующее:

  • Откройте TextEdit и введите строку подключения в виде: ssh://user@host.com
  • Выделите всю строку и перетащите ее на рабочий стол. Результатом будет *.inetlocфайл.
  • Переместите файл в любую папку, которая вам нравится. Я сделал одно имя, ~/connectionsкоторое содержит все мои *.inetlocфайлы. Вы можете переименовать этот файл так, как вам нравится, и даже изменить его значок.
  • Теперь вы можете перетащить *.inetlocфайл в Dock, боковую панель Finder, панель инструментов или куда-либо еще. (Его можно даже выбрать с помощью Spotlight)
  • Если вы используете LaunchBar, откройте экран Конфигурация панели запуска (Command-Y) и добавьте еще одно правило для папки подключений. Теперь ваши SSH-соединения могут быть открыты с помощью LaunchBar. Я считаю, что вы можете сделать то же самое с LaunchBar и Quicksilver, что позволяет быстро запускать ваши ярлыки SSH.

Создать быстрый доступ к SSH ярлыкам


1
Это, безусловно, хороший и быстрый способ открыть терминал на удаленном хосте!
cmroanirgo

3

Для тех, кто использует закрытый ключ со своим ssh и хочет использовать метод ~ / .ssh / config, вы можете добавить атрибут «IdentityFile» на ваш хост, а затем путь к ключу. То есть:

Host SomeServer
    User ubuntu
    HostName someserver.com
    IdentityFile ~/.ssh/private.key

Я бы добавил этот бит в качестве комментария к одному из ответов, но моя репутация все еще низка, и мне не разрешено это делать.


2

Если вам нужен файл, который вы можете открыть для запуска сеанса, вы можете легко создать .inetloc. В TextEdit введите URL-адрес SSH для вашего хоста, например:

ssh://username@hostname/path

TextEdit распознает это как URL. Перетащите URL-адрес на рабочий стол, и он создаст .inetloc следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>URL</key>
    <string>ssh://username@hostname/path</string>
</dict>
</plist>

Затем вы можете поместить этот файл в любое место, например, в док-станцию, или открыть его с помощью средства запуска, такого как Quicksilver.

Я бы порекомендовал плагин SSH для Quicksilver, но последняя версия, которую я могу найти, v.84, дает сбой QS новее, чем β54 (3815).


Вы также можете сделать это с портом? Например hostname:1234?
Даниэль Бек

Да. ssh: // username @ hostname: порт также работает.
Турадг

1

Если вы используете Quicksilver, есть отличная надстройка под названием RemoteHosts, которая автоматически сканирует файл ~ / .hosts или даже ваш файл ~ / .ssh / known_hosts для автоматического заполнения.

Подключение к новому хосту так же быстро, как открыть Quicksilver (CMD-Space), а затем набрать достаточно символов хоста, чтобы быть уникальным, и, наконец, нажать Enter.


0

Если часть, которая вам не подходит, набирает длинную и сложную команду ssh, но вы не возражаете против открытия терминала, и по какой-то причине вы не хотите использовать какой-либо из предыдущих подходов к ответам, тогда вы также можете использовать псевдонимы или функции. Добавьте что-то подобное в dotfile оболочки (.profile или .bash_profile или .bashrc или .cshrc или .zshrc или что-то еще):

alias connect.dev='ssh -p 12345 yourusername@dev.somehost.net'

Единственное преимущество, которое я вижу перед другими подходами, состоит в том, что (по крайней мере, в zsh, и я думаю, что bash) вы можете использовать завершение команды, чтобы увидеть все ваши серверы для подключения. Например, допустим, у вас есть 25 различных серверов, к которым вы подключаетесь, и вы не хотите запоминать все имена / псевдонимы, которые вы им дали, в файле .ssh / config. Если все псевдонимы начинаются с одного и того же, например «connect.», Вы просто набираете в командной строке connect. [TAB], и вы увидите все возможные варианты завершения. (Отказ от ответственности: вам может потребоваться выполнить некоторые настройки оболочки, чтобы это работало, но я считаю, что это будет работать по умолчанию в zsh и, вероятно, в bash.)

Если часть, которая вам не подходит, это открытие терминала, тогда вы можете попробовать использовать что-то вроде DuckBill , хотя единственными причинами, по которым я могу подумать о запуске ssh OUTSIDE of Terminal, может быть запуск программ сервера X Windows или туннель ssh.


0

Вы можете создать файл в вашем локальном каталоге bin

/usr/local/bin/dev

Со следующим содержанием:

#!/bin/bash
ssh -p 12345 username@www.mydomain.com 

Сделайте это исполняемым

chmod a+x /usr/local/bin/dev

Который затем вы можете позвонить с терминала, используя

dev

И затем вы создаете задачу автоматизатора, чтобы открыть ее

tell application "Finder" to set theSel to selection

tell application "Terminal"
    set theFol to POSIX path of ((item 1 of theSel) as text)
    if (count of windows) is not 0 then
        do script "/usr/local/bin/dev2" in window 1
    else
        do script "/usr/local/bin/dev2"
    end if
    activate
end tell

Вы также можете создать ярлык из панели запуска или горячей клавиши на клавиатуре

Launcher: перетащите иконку из автоматического сохранения в док-панель

Сочетание клавиш:

create as service in automator
open system services -> keyboard -> shortcuts -> app shortcuts -> enter title of automator and key shortcut 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.