Меня только что наняли для работы в лаборатории с большим кластером Linux. Я парень Mac / Windows, поэтому я все еще пытаюсь понять, как перемещаться, используя командную строку nix. Пока я не сталкивался с какими-либо реальными проблемами, но я столкнулся с примерно 5000 различных мелких неприятных вещей, связанных с изучением новой системы.
На данный момент самое большое раздражение заключается в следующем: по какой-либо причине (безопасность, что-то о том, как настроены эти серверы, о чем я еще не знаю достаточно, и т. Д.) При входе в кластер из-за пределов кампуса через SSH у вас сначала есть через SSH на старый imac, который стоит на столе в лаборатории, а затем через SSH в кластер. Я использовал команду SCP для копирования файлов с моего домашнего Mac в кластер:
сначала в одном окне терминала:
my-home-mac:scp file userA@XXX.XXX.XXX.XXX:~/target
затем в другом окне терминала (в котором я вошел в лабораторный imac):
lab-imac:scp file userB@YYY.YYY.YYY.YYY:~/target
и проблема в том, что каждый раз, когда я это делаю, я вынужден сначала SCP файлы в лабораторный imac (и ввести один пароль), а затем SCP файлы оттуда в кластер (и ввести другой пароль). Я пытаюсь помочь разработать эту программу на языке C, которая разделена на 4 дюжины файлов, поэтому я перемещаю много файлов, и это сводит меня с ума.
Думаю, мне придется изучить сценарий оболочки, но пока что, просто чтобы приступить к работе, у меня есть несколько вопросов:
как я могу настроить терминал на моем домашнем Mac, чтобы мне не приходилось всегда вводить пароли для лабораторного imac или кластера?
Есть ли способ передать файлы SCP (или какой-либо другой команды) прямо с моего домашнего Mac в кластер, минуя промежуточное звено?
Есть ли способ настроить Fugu (или любой другой SSH-клиент с графическим интерфейсом, если на то пошло) на моем домашнем Mac, чтобы он мог учитывать промежуточный сервер (лабораторный imac) и действовать так, как будто он подключает меня напрямую к кластер?
Я физик, а все остальные в лаборатории - биологи, и парень, который все это создал, давно ушел, поэтому я обращаюсь к вам, ребята, всем вам в замечательном сообществе переполнения стека, чтобы дайте мне руку здесь. Спасибо.
В SSH вы можете настроить автоматическое переключение промежуточных узлов с помощью записей Host и ProxyCommand, см. этот
Чтобы не вводить пароль, см. эта ссылка
Вы можете настроить ключи, чтобы не вводить пароли. Я уверен, что это уже упоминалось здесь раньше (см. Как использовать открытый ключ SSH с удаленного компьютера?; намек ssh-keygen
), и я всегда использую клиент командной строки OpenSSH (установленный с финк на моем Mac с локальным диспетчером пакетов в Linux), поэтому я не буду обращаться к глупым квазиграфическим клиентам.
ssh
или scp
через шлюзВам понадобятся две командные строки на исходной машине (которую я назову ориг). Шлюз называется воротами, а пункт назначения - назначением.
Первая командная строка:
orig$ ssh -L 1111:dest.tld:22 gate.tld
Это связывает порт 1111, исходящий на происхождение на порт 22 входящий dest через туннель ssh через Ворота.
Теперь, если вам понадобится эта переадресация на какое-то время, настройте ее на выполнение чего-то, что не позволит сеансу истечь по тайм-ауту. я использую top
.
Вторая командная строка:
orig$ ssh -p 1111 username_on_dest@localhost
или
orig$ scp -P 1111 path/to/file/on/orig/filename username_on_dest@localhost:path/on/dest/new_filename
(обратите внимание, что опция указания порта использует разные заглавные буквы для ssh
и scp
... arghhh!) Прочтите документацию, чтобы узнать, как с этим можно поиграть, но это основная схема. Очень полезно, если вы регулярно используете ресурсы, которые не доступны в общедоступной сети по соображениям безопасности.
Чтобы не вводить пароли повсюду, используйте ключи SSH. Есть много ресурсов здесь на SU и в другом месте о том, как это сделать. Один совет: всегда ставьте кодовую фразу на свой ключ!
Чтобы «обойти» шлюз Mac и получить прямой доступ к лабораторным машинам, вам необходимо использовать возможности туннелирования SSH. Вы устанавливаете связь между домашним Mac и Mac-шлюзом лаборатории, перенаправляя порты локального Mac на компьютеры в лаборатории. Затем вы подключаетесь к локальному компьютеру Mac через эти определенные порты, и вместо этого трафик перенаправляется на лабораторный компьютер.
Учитывая следующее:
У вас может быть командная строка SSH, которая выглядит следующим образом:
ssh -L 2001:LAB01:22 -L 2002:LAB02:22 2003:LABNN:22 joe@LABIMAC
для создания туннелей, а затем выполните отдельные команды SSH для лабораторных компьютеров:
ssh -p 2001 joe@localhost
ssh -p 2002 joe@localhost
ssh -p 2003 joe@localhost
Конечно, имена пользователей на разных лабораторных машинах могут быть разными. Все это может быть немного многословным, поэтому вы можете создавать псевдонимы в SSH файл конфигурации помогать:
host LAB01
hostname localhost
port 2001
host LAB02
hostname localhost
port 2002
host LAB03
hostname localhost
port 2003
Затем вы можете пропустить порт и localhost в командной строке и сделать что-то более естественное, как только туннель к Mac лаборатории будет установлен:
ssh joe@LAB01
Вы даже можете упростить создание туннеля, используя файл конфигурации:
host LABIMAC
LocalForward 2001 LAB01:22
LocalForward 2002 LAB02:22
LocalForward 2003 LABNN:22
Таким образом, каждый раз, когда вы ssh в LABIMAC, эти локальные перенаправления портов устанавливаются автоматически:
ssh joe@LABIMAC
(и во втором окне)
ssh joe@LAB01
Вы также можете изучить использование autossh
чтобы первоначальное туннельное соединение оставалось открытым в периоды бездействия.
Еще одним усовершенствованием для замены второй команды является использование FileZilla в качестве графического интерфейса для перетаскивания между локальными и удаленными машинами, если вы уже настроили туннелирование.
orig$ ssh -L 1111:dest.tld:22 gate.tld
Это может позволить вам загружать файлы.
1) Уже ответил: SSH-ключи - Автоматический вход - Без пароля и Более безопасный.
|||||||
2) Перенесите файлы с помощью rsync:
(т.е.) Использование порта 22:
rsync -av -e ssh / var / files / mysource / root@68.x2x.27.1xx: / var / waytogo / пример
Использование другого порта (рекомендуется)
rsync -av -e 'ssh -p 34xx' / var / files / mysource / root@68.x2x.27.1xx: / var / waytogo / пример
^^^
В приведенном выше примере не удаляются лишние файлы, оставшиеся на целевом сервере.
||||||||||||
3a) Клиентам SSH на самом деле не нужен графический интерфейс, PuTTy прост и увлекателен после небольшого обучения. : o)
3b) Переадресация при входе в систему может быть скриптом; Для полуавтоматического режима просто создайте псевдоним команды, и вы нажмете одно или два клавиши.
Примечание: псевдонимы очень легко выучить, в Linux отредактируйте /root/.bashrc
alias job='ssh -p 34xx root@68.x2x.27.1xx'
Теперь просто введите «задание» в качестве команды, и вы войдете на другой компьютер (используя свои SSH-ключи).