Автоматизировать скрипт при загрузке для подключения через ssh
Так что я в своем уме с этим, я не полный n00b с Linux, но я знаю достаточно, чтобы обойти и т.д. и изменить сценарии других людей.
Вот что я пытаюсь сделать. Во-первых, я хотел включить ssh без пароля в свой pi2, используя открытые / закрытые ключи, но это не помогло, что бы я ни делал. Итак, я создал ожидаемый скрипт для входа в мой pi2, указав пароль в скрипте. Совершенно небезопасно, я знаю, но все, что я использую ssh для этого случая, это для пересылки определенного порта (который запускает apache2 - Owncloud) через туннель ssh, чтобы я мог получить к нему доступ из Интернета. Причина в том, что моя Элементарная ОС (на основе Ubuntu 16.04) постоянно подключена к VPN, и без этого порта я не могу использовать свое домашнее облако на работе или в любом месте вне дома. С этим VPN-сервисом не существует простого способа создания разделенного туннеля, особенно если у вас динамический IP-адрес (кстати, я по профессии сетевой инженер, так что это моя сильная сторона).
Теперь, когда это не так. Ожидаемый сценарий, который я запускаю, выглядит следующим образом.
#!/usr/bin/expect
>set timeout 20
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh -fN -R [remote port]:localhost:[local port] "$user\@$ip"
expect "username@x.x.x.x's password:"
send "$password\r";
interact
Тогда я конкретизирую следующее в терминале.
/usr/local/bin/ssh.exp [ip address] [username] [password]
Это прекрасно работает, и я могу выполнить скрипт после того, как я вошел в систему.
Я хотел бы, чтобы это работало автоматически при загрузке, и пока ничего не работает. Не удается добавить это в crontab с помощью @reboot, а добавить это в rc.local также невозможно. Мне интересно, потому что он пытается запустить его на переднем плане или потому что это ожидаемый сценарий, а не bash.
Полностью в недоумении здесь люди, некоторые советы будут с благодарностью. Кстати, если я смогу заставить работать SSH без пароля, это было бы здорово.
1 ответ
Итак, я понял это после некоторого возни.
Права доступа к папке.ssh и файлу author_keys на pi должны быть установлены на 655 для обоих, а пользователя нужно изменить на pi, а не root. Это удалось исправить мою проблему с паролем входа в систему.
С этого момента я мог просто выполнить стандартную команду ssh в rc.local, хотя я обнаружил, что она выполняется от имени пользователя root. В этом случае мне нужно было конкретизировать следующее.
ssh -fN -i /home/user/.ssh/id_rsa -R 9000:localhost:5253 pi@x.x.x.x
Конечно, теперь он сохраняется и после перезагрузки, а OwnCloud теперь доступен через сеть.