Ничего себе, благодарит задать этот вопрос. Я нахожу редким видеть кого-то полностью использующего SSH, и этот вопрос совершает нападки на нескольких областях.
Это не a ProxyCommand
проблема. ProxyCommand
просто дает локальному ssh клиенту команду делать что-то в подготовке прежде, чем попытаться говорить с удаленным клиентом. Да, в нашем экземпляре мы говорим с другой ssh сессией, но той сессией, с -W
просто берет наш вход и вперед это к другой машине. Можно думать о той предварительной ssh сессии, абсолютно независимо. Неизбежная автомобильная аналогия: Ваш автомобиль является тем же автомобилем, независимо от того, необходимо ли было ездить на пароме, чтобы заставить от точки указывать на B.
Это не a ForwardAgent
проблема. ForwardAgent
сделал, чтобы локальный клиент предоставил услугу, которая делает локальные ключи доступными в среде удаленного сеанса. Вы не закончили установление удаленного сеанса.
Это .ssh/config
проблема формата. Отметьте вторые и третьи debug1 строки. Они перечисляют, какие строки файла конфигурации Хоста применяются от Вашего .ssh/config
. Вы отмечаете это $ ssh target.example.com%via
работы, но как неверное имя пользователя и ключ. Ну, строка файла конфигурации для Host target
не читается (который ввел бы корректное имя пользователя и файл ключей). Какие строки файла конфигурации используются? *
и *%via
.
Как получить эти опции передать? Ну, достаточно интересный, подстановочный знак соответствует 0 строкам длины. Host target*
будет соответствовать target
, target%via
, target.example.com
и target.example.com%via
.
И таким образом, Вы задаете вопрос, был бы, устанавливая .ssh/config
на gateway
справка машины. Нет, это не было бы. Это никогда не читалось бы. Все происходит от нашей локальной машины.
Все, что я объяснил, только отвечает почему $ ssh target.example.com%via
не работает.
Вы предпочитаете $ ssh target%via
. Справедливо так, это более удобно. Краткая форма перестала работать потому что как имя хоста, target
не найден; это не решает. То, почему не, не является извергающим ssh: ssh: Could not resolve hostname target: Name or service not known
? Поскольку ProxyCommand
был уже успешно установлен. Элементы соединения SSH были созданы, но отказ имени хоста происходит, где он не ожидает, и таким образом, он разбомбит с более универсальным сообщением. Я зарегистрировал бы отчет об ошибках на этом, чтобы помочь определить, где отладочная информация могла быть улучшена.
Заключительный комментарий:
Мне действительно нравится Host *%via
синтаксис. Это чисто, все же гибко. Я ранее видел Host *+*
и это использует обоих первая и последняя часть %h(ost)
определить, куда пойти. Но прилагает немного больше усилий получить Ваш ум вокруг этого. ссылка: http://wiki.gentoo.org/wiki/SSH_jump_host
Здесь Как это было сделано, с XKB. Современные версии Chrome OS Теперь используйте Ash .
Создание каталогов под названием ~ / .xkb / keymap
, ~ / .xkb / Типы
и ~ / .xkb / Символы
. Создать файл ~ / .xkb / Типы / Chromebook
, содержащий следующее определение:
xkb_types "chromebook" {
virtual_modifiers Alt;
type "ARROW" {
modifiers = Shift+Lock+Alt+Control;
map[Shift] = Level2;
map[Lock] = Level2;
map[Alt] = Level3;
map[Alt+Shift] = Level3;
map[Alt+Lock] = Level3;
map[Control+Alt] = Level4;
map[Control+Alt+Shift] = Level4;
map[Control+Alt+Lock] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Caps";
level_name[Level3] = "Alt";
level_name[Level4] = "ControlAlt";
};
}
Создать файл ~ / .xkb / symbols / chromebook
, содержащий следующее определение:
xkb_symbols "chromebook" {
key <UP> {
type="ARROW",
repeat=yes,
[ Up, Up, Prior, Home ],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<PGUP>, clearmods=Alt),
RedirectKey(key=<HOME>, clearmods=Control+Alt)
]
};
key <DOWN> {
type="ARROW",
repeat=yes,
[ Down, Down, Next, End ],
actions[Group1] = [
NoAction(),
NoAction(),
RedirectKey(key=<PGDN>, clearmods=Alt),
RedirectKey(key=<END>, clearmods=Control+Alt)
]
};
};
Запустите команду SetXKBMAP -Print> ~ / .xkb / keymap / chromebook
. Отредактируйте полученный файл и добавьте + ChromeBook
внутри включают
директивы xkb_types
и xkb_symbols
; Файл должен выглядеть следующим образом:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete+chromebook" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+chromebook" };
xkb_geometry { include "pc(pc105)" };
};
Добавьте следующую команду на приложения запуска :
xkbcomp -I ~/.xkb -R ~/.xkb keymap/chromebook $DISPLAY
Примечание: это непроверено, я не очень знаком с XKB, и он плохо документирован. Я пытался следовать Советы XKB Vincent Lefèvre .