Псевдотерминал не будет выделен, потому что stdin не является терминалом

То, что Вы описываете, точно кажется, что основное переименовывает для перезаписи файла.

Когда Вы переименовываете/перемещаете один файл сверху другого, старый файл является несвязанным. Значение файла все еще существует, но это больше не находится в дереве файловой системы. Таким образом старые приложения продолжат мочь получить доступ к файлу, пока они сохраняют его открытым. После того как все приложения закрыли старый файл, затем его на самом деле освобожденный на диске.

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

14
08.07.2013, 06:18
4 ответа

SSH ProxyCommand без netcat

ProxyCommand очень полезен, когда хосты только косвенно доступны. С netcat это - относительный пролив вперед:

ProxyCommand ssh {gw} netcat -w 1 {host} 22

Здесь {gw} и {хост} являются заполнителями для шлюза и хоста.

Но также возможно, когда netcat не установлен на шлюзе:

ProxyCommand ssh {gw} 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'

/dev/tcp является встроенной функцией стандартного удара. Файлы не существуют. Чтобы проверить, имеет ли удар эту функцию встроенное выполненное использование:

cat < /dev/tcp/google.com/80 

... на шлюзе.

Чтобы удостовериться, что удар используется, используйте:

ProxyCommand ssh {gw} "/bin/bash -c 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'"

И это даже сотрудничает с ControlMaster.

(Обновленный 22 октября для включения уничтожают для чистки второстепенной кошки) (Обновленный 3 марта 2011, чтобы сделать заполнителей более ясными и объяснить/dev/tcp)

100%-й кредит к roland schulz. Вот источник:
http://www.rschulz.eu/2008/09/ssh-proxycommand-without-netcat.html
посмотрите более полезную информацию в комментариях там.

Существует также больше здесь:
http://www.linuxjournal.com/content/tech-tip-tcpip-access-using-bash
http://securityreliks.securegossip.com/2010/08/enabling-devtcp-on-backtrack-4r1ubuntu/

ОБНОВЛЕНИЕ: вот что-то новое от Marco

В отношении ProxyCommand в ~/.ssh/config, где у каждого есть строка как это:

ProxyCommand ssh gateway nc localhost %p

Marco говорит:

Вам не нужен netcat при использовании последней версии OpenSSH. Можно заменить nc localhost %p с-W localhost: % p.

Результат был бы похож на это:

ProxyCommand ssh gateway -W localhost:%p
13
27.01.2020, 19:51

Дайте этому попытку:

ProxyCommand ssh -A -t gateway ssh -t steve@targetip
3
27.01.2020, 19:51
  • 1
    Ожидайте, как это отличается от того, что я попробовал? –  Steve Bennett 08.07.2013, 07:26
  • 2
    @SteveBennett, который различие - то, что это не только пытается выделить TTY во второй системе, но в первом, также. –  Hauke Laging 08.07.2013, 07:33
  • 3
    это - точно та же команда, которую я упомянул с "забавным, но бесполезным" результатом? –  Steve Bennett 08.07.2013, 09:24
  • 4
    @SteveBennett я неправильно читал это, действительно. Моя цель состояла в том, чтобы иметь -t в обоих соединениях и я видел его в неправильном. Я отредактировал свой ответ. –  Hauke Laging 08.07.2013, 09:48
  • 5
    . Ну, все еще не имеющий смысла. Попробованный все комбинации. –  Steve Bennett 08.07.2013, 10:41

Большой T, не мало t.

-T' Disable pseudo-tty allocation.
-t' Force pseudo-tty allocation. 

Мой сценарий, используемый для возврата того сообщения, и, больше не делает.

/usr/bin/ssh -T -q -i $HOME/.ssh/one_command other_system

Я использую authorized_key на other_system, чтобы заставить это выполнять команду:

from="my.mydomain.com",command="bin/remotely-run" ssh-rsa ... 
8
27.01.2020, 19:51

Можно попробовать следующую технику ssh'ing в server1 с последующим ssh'ing в server2.

$ ssh -t user1@server1 ssh -t user2@server2 

Делать это так, как это работает для меня.

-3
27.01.2020, 19:51

Теги

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