Запустите autossh при запуске системы


15

Есть ли способ запуска autosshпри запуске, чтобы он запускал и настраивал туннель ssh еще до того, как пользователь вошел в систему? Я загружаю Ubuntu в терминал, и я хотел бы, чтобы autosshпроцесс запускался автоматически при запуске, чтобы я мог войти в ssh.

Я попытался добавить команду /etc/rc.local, а также создать /etc/init/*.confскрипт. Кажется, ничего из этого не работает.


Какая версия Ubuntu это?
Джордж Удосен

@ Джордж 16.04 LTS.
ПТФ

Ответы:


20

С помощью systemdэтого можно сделать (образец autosshсоздан для mysqlдоступа):

  1. Создайте системный файл, используя nanoили vimили соответствующий редактор по выбору:

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
  2. Добавьте следующее содержание:

    [Unit]
    Description=AutoSSH tunnel service everythingcli MySQL on local port 5000
    After=network.target
    
    [Service]
    Environment="AUTOSSH_GATETIME=0"
    ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NL 5000:localhost:3306 cytopia@everythingcli.org -p 1022
    
    [Install]
    WantedBy=multi-user.target
    
  3. Перезагрузить systemd:

    sudo systemctl daemon-reload
    
  4. Запустите Autosshсервис:

    sudo systemctl start autossh-mysql-tunnel.service
    
  5. Включить в boot:

    sudo systemctl enable autossh-mysql-tunnel.service
    
  6. Проверьте статус с помощью:

    sudo systemctl status autossh-mysql-tunnel
    

Заметка

Однако следует отметить одну важную вещь, касающуюся systemd и AutoSSH: -f (использование в фоновом режиме) уже подразумевается AUTOSSH_GATETIME=0, однако -fне поддерживается systemd.

Так что в случае systemdвам нужно использоватьAUTOSSH_GATETIME

Источник


Благодарность! Я пытаюсь, но когда я бегу sudo service reverse-ssh-tunnel.service status, я получаю Loaded: not-found (Reason: No such file or directory).
Исследуем

пожалуйста, sudo systemctl status reverse-ssh-tunnelнеsudo service reverse-ssh-tunnel.service status
Джордж Удосен

2
Я полагаю, что вы имеете в видуautossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>
Джордж Удосен

2
Мне нужно было также добавить -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no. Может, мне просто нужен один из них, я не проверял их по отдельности. Нашел вот это: stackoverflow.com/a/24689061/1211119 . Однако, когда я смотрю на экран входа в систему tty1 (я загружаюсь в терминал), сервис еще не создал туннель. Если я вхожу, служба запускается.
PTF

2
Иногда вы хотите работать в другом пользовательском контексте. Для этого: Добавить User=usernameв [Service]раздел в файле systemd.
Friederbluemle
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.