Gracias por todas las respuestas. He editado las configuraciones después de leer sus comentarios. ¿Esto se ve más bien?
; BIND data file for local loopback interface
;
$TTL 5D
@ IN SOA ns1.craig.linuxcourse.tfe.ltu.se.
root.linuxcourse.tfe.ltu.se. (
2018052100 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
10800 ); Negative Cache TTL
;
IN NS ns1.craig.linuxcourse.tfe.ltu.se.
ns1 IN A xxx.239.163.100
www IN A xxx.239.163.110
ftp IN A xxx.239.163.120
craig IN A xxx.239.163.130
Y así es como se ve named.conf.local:
zone "craig.linuxcourse.tfe.ltu.se" in {
allow-transfers { any; };
file "/etc/bind/db.craig.linuxcourse.tfe.ltu.se";
type master;
};
Важно понимать, что аргументы, переданные в ssh
, объединяются, чтобы составить командную строку оболочки , интерпретируемую оболочкой входа удаленного пользователя.
Таким образом, чтобы иметь возможность запускать some-shell-code
на C через ssh-соединение с B, вам нужно построить командную строку для B, чтобы оболочка входа пользователя B правильно интерпретировала ее, чтобы передать это some-shell-code
как есть. к ssh
.
Если текущая оболочка на A, оболочка входа пользователя на B и оболочка входа пользователя на C — все bash
, одна и та же версия (и используется одна и та же локаль, если часть этого кода содержит -символы ASCII ), а $CODE
содержит код bash
для выполнения на C, вы можете сделать:
printf -v quoted_CODE %q "$CODE"
ssh B "ssh C $quoted_CODE"
Если вы не уверены, что оболочка входа пользователя на B или C — bash
, и вам не нужно передавать какую-либо информацию через стандартный ввод, вы можете просто выполнить:
ssh B ssh C bash <<< "$CODE"
Или если вы знаете, что sshd
на A и B разрешают входящие LC_*
переменные(AcceptEnv LC_*
общие вsshd_config
):
LC_CODE=$CODE ssh -o SendEnv=LC_CODE B '
ssh -o SendEnv=LC_CODE C bash -c '\'' eval "$LC_CODE"'\'