SSH прямой stdin и крепкий к и от клиента пост-ГРЭС

Можно использовать ntpdate для запросов сервера времени

ntpdate -q ntp.ubuntu.com

2
задан 21 April 2013 в 15:06
2 ответа

Использовать переадресацию порта ssh с фоновым сеансом ssh без команд:

$ ssh -N -f -L 5433:localhost:5432 remoteserver

, с которым вы затем можете использовать:

$ psql -h localhost -p 5433

psql команды, такие как \ o , \ i и т. Д. Будут относиться к файлам на локальном компьютере.

Если вы пытаетесь сделать это в целях написания сценариев, вы, вероятно, захотите использовать параметр ssh -n и ключ SSH без пароля с параметрами, установленными в authorized_keys , чтобы предотвратить создание оболочки, поэтому все , что вы можете сделать, это переадресация порта на заданный порт. Это очень важно для безопасности при использовании ключей без пароля. ssh-agent предоставляет несколько более безопасную альтернативу, но более неуклюжую для написания сценариев. Помните, что ваш сценарий должен будет записать идентификатор процесса фонового сеанса ssh, который он породил, и убить его в конце задачи. Иногда проще использовать управление заданиями оболочки, чем собственный режим демонизации ssh; таким образом оболочка отслеживает процесс, связанный с и , и его можно завершить с помощью kill% jobid . См. управление заданиями bash . (Вам необходимо выполнить фоновый сеанс ssh перенаправления портов, чтобы выполнение сценария могло продолжаться и запускать psql .)

Для интерактивного использования вы можете просто вызвать удаленный psql через ssh , и в этом случае команды типа \ o , \ i , \ copy и т. Д. Будут ссылаться на файлы, локальные для сервера, на котором вы ssh 'd to, а не ваш локальный компьютер:

$ ssh remoteserver psql

Это также работает для сценариев, но несколько менее безопасно, чем перенаправление портов, поскольку psql - довольно мощная программа, которая позволяет вам читать и записывать произвольные файлы, создавать оболочку и т. Д. На самом деле они ограничивают возможности ключа ssh без пароля, если ему разрешено удаленно вызывать psql . С другой стороны, много проще написать:

ssh remoteserver psql <<'__END__'
BEGIN;
INSERT INTO blah(a,b,c) VALUES (1,2,3);
UPDATE otherblah SET x = 99, y = 912;
COMMIT;
__END__

, чем возиться с фоновыми сеансами ssh. На самом деле это зависит от ваших приоритетов.

С другой стороны, много проще написать:

ssh remoteserver psql <<'__END__'
BEGIN;
INSERT INTO blah(a,b,c) VALUES (1,2,3);
UPDATE otherblah SET x = 99, y = 912;
COMMIT;
__END__

, чем возиться с фоновыми сеансами ssh. На самом деле это зависит от ваших приоритетов.

С другой стороны, много проще написать:

ssh remoteserver psql <<'__END__'
BEGIN;
INSERT INTO blah(a,b,c) VALUES (1,2,3);
UPDATE otherblah SET x = 99, y = 912;
COMMIT;
__END__

, чем возиться с фоновыми сеансами ssh. На самом деле это зависит от ваших приоритетов.

5
ответ дан 3 December 2019 в 09:38

Вы можете использовать iptables на удаленном компьютере для перенаправления трафика postgresql на сервер db. Например:

iptables -A PREROUTING -s your_machine_ip -p tcp --dport 5432 -j DNAT --to-destination db_server_ip

Конечно, для этого требуются права администратора на удаленной машине. Вам также необходимо включить переадресацию IP.

Со своего компьютера вы просто подключаетесь к удаленному компьютеру, и он перенаправляет вас на сервер базы данных. Таким образом, вам не нужно показанное ssh-соединение.

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

0
ответ дан 3 December 2019 в 09:38

Теги

Похожие вопросы