- Как передать пароль в su/sudo / ssh без переопределения TTY?
- 20 ответов
- 🐧 Как выполнить команды на удаленной системе Linux через SSH
- 1) Как выполнить команду на удаленной системе Linux через SSH
- 2) Как запустить несколько команд на удаленной системе Linux через SSH
- 3) Как запустить команду с привилегиями sudo на удаленной системе Linux через SSH
- 4) Как запустить служебную service с привилегией sudo на удаленной системе Linux через SSH
- 5) Как выполнить команду на удаленной системе Linux через SSH с нестандартным портом
- 6) Как сохранить вывод из удаленной системы в локальную через ssh
- How to run sudo command without a password on a Linux or Unix
- How to to run sudo command without a password:
- How do I execute ALL sudo commands without password?
- How do I test it?
- Conclusion
- Как подключиться к серверу по SSH с помощью пароля или ключа
- Проверка службы SSH на сервере
- Использование пароля
- Подключение на Windows
- Подключение на Linux и macOS
Как передать пароль в su/sudo / ssh без переопределения TTY?
Я пишу программу оболочки C, которая будет делать su или sudo или ssh . Все они хотят, чтобы их пароли находились в консольном вводе (TTY), а не в stdin или командной строке.
кто-нибудь знает решение?
настройка без пароля sudo это не вариант.
ожидал может быть вариантом, но его нет в моей урезанной системе.
20 ответов
для sudo есть опция-S для принятия пароля от стандартного ввода. Вот запись человека:
Это позволит вам запускать команды:
Что касается ssh, я сделал много попыток автоматизировать/скрипт, это использование без успеха. Кажется, что нет никакого встроенного способа передать пароль в команду без запроса. Как уже упоминали другие,»ожидал» утилита, похоже, направлена на решение этой проблемы дилемма, но в конечном счете, настройка правильной авторизации с закрытым ключом является правильным способом при попытке автоматизировать это.
Я написал некоторый Applescript, который запрашивает пароль через диалоговое окно, а затем создает пользовательскую команду bash, например:
Я не уверен, если это помогает.
было бы неплохо, если бы sudo принял предварительно зашифрованный пароль, чтобы я мог зашифровать его в своем скрипте и не беспокоиться о повторении паролей с открытым текстом. Однако это работает для меня и моей ситуации.
на ssh можно использовать sshpass : sshpass -p yourpassphrase ssh user@host .
вам просто нужно сначала загрузить sshpass:)
Источник
🐧 Как выполнить команды на удаленной системе Linux через SSH
Возможно, нам потребуется выполнить некоторые команды на удаленной машине.
Для этого войдите на удаленную систему и выполните свои действия, если это происходит время от времени.
Но если это происходит часто, каждый раз, когда вы делаете это может вас сильно раздражать
Если так, то как лучше выбраться из этой ситуации?
Да, вы можете сделать это из локальной системы вместо входа в удаленную систему.
Это сэкономит вам много времени.
Как это происходит?
SSH позволяет вам запускать команды на удаленном компьютере без входа в систему.
Общий синтаксис следующий:
1) Как выполнить команду на удаленной системе Linux через SSH
В следующем примере пользователи могут запускать команду df через ssh на удаленном компьютере с Linux.
2) Как запустить несколько команд на удаленной системе Linux через SSH
В следующем примере пользователи могут запускать несколько команд одновременно через ssh на удаленной системе Linux.
Он одновременно запускает команды uptime и free на удаленной системе Linux.
3) Как запустить команду с привилегиями sudo на удаленной системе Linux через SSH
В следующем примере пользователи могут запускать команду fdisk с привилегией sudo на удаленной системе Linux через ssh.
Обычные пользователи не могут выполнять команды, доступные в системном бинарном каталоге (/usr/sbin/).
Пользователи должны иметь права root для запуска этих бинарников.
Таким образом, чтобы запустить команду fdisk в системе Linux, вам нужны права root.
Команда which возвращает полный путь к исполняемому файлу данной команды.
4) Как запустить служебную service с привилегией sudo на удаленной системе Linux через SSH
В следующем примере пользователи могут запускать команду service с привилегией sudo на удаленной системе Linux через ssh.
5) Как выполнить команду на удаленной системе Linux через SSH с нестандартным портом
В следующем примере пользователи могут запускать команду hostnamectl через ssh на удаленной машине Linux с нестандартным портом.
6) Как сохранить вывод из удаленной системы в локальную через ssh
В следующем примере пользователи могут удаленно выполнять команду top в системе Linux через ssh и сохранять выходные данные в локальной системе.
Кроме того, вы можете использовать следующий формат для запуска нескольких команд в удаленной системе.
Источник
How to run sudo command without a password on a Linux or Unix
I ‘m a new Unix system user. How do I use sudo command without a password on a Linux or Unix-like systems? I log in as tom@my-cloud-server-ip and disabled root login for ssh. After login, I need to run some commands as root user. I am the only sysadmin using my server. How do I run or execute sudo command without a password for a user named Tom under Debian/Ubuntu/CentOS Linux cloud server?
sudo (“superuser do”) is nothing but a tool for Linux or Unix-like systems to run commands/programs as another user. Typically as a root user or another user. You can delegate common tasks such as reboot the server or restart the Apache or make a backup using sudo for unprivileged users. By default, sudo needs that a user authenticates using a password before running a command. Some times you may need to run a command with root privileges, but you do not want to type a password using sudo command. This is useful for scripting or any other purpose. This can be achieved by editing /etc/sudoers file and setting up correct entries. You need to consider any security consequence of allowing a sudo command execute without a password.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | Yes |
Requirements | sudo on Linux or Unix/BSD/macOS |
Est. reading time | 3 mintues |
NOTE: Initial setup must be done using the root account. One can gain root access by directly log in as root using console, ssh, or su command:
su —
In all cases, you must know the root password in advance before sudo can be configured to commands without a password. You might have sudo access and grant another user account passwordless access for commands.
How to to run sudo command without a password:
- Gain root access: su —
- Backup your /etc/sudoers file by typing the following command:
cp /etc/sudoers /root/sudoers.bak - Edit the /etc/sudoers file by typing the visudo command:
visudo - Append/edit the line as follows in the /etc/sudoers file for user named ‘vivek’ to run ‘/bin/kill’ and ‘systemctl’ commands:
vivek ALL = NOPASSWD: /bin/systemctl restart httpd.service, /bin/kill - Save and exit the file.
How do I execute ALL sudo commands without password?
Type the following command as root user:
# visudo
Or if you have sudo access and want to grant another user permission, try:
$ sudo visudo
Append the following entry to run ALL command without a password for a user named tom:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Here is my sample config file:
Fig.01: How to execute sudo without password for tom user
How do I test it?
Simply run /bin/kill to kill any process without a password:
[vivek@server ]$ sudo /bin/kill pid-here
OR
[vivek@server ]$ sudo /bin/systemctl restart httpd.service
Conclusion
You learned how to run a command without a password when using sudo on Linux or Unix-like systems. There is a significant security risk associated with passwordless operations. Hence, I would strongly recommend NOT doing this, but as they say, “it is not UNIX’s job to stop you from shooting your foot. If you so choose to do so, then UNIX’s job is to deliver Mr. Bullet to Mr. Foot in the most efficient way it knows.” For more info read man pages:
visudo(8)
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
Как подключиться к серверу по SSH с помощью пароля или ключа
SSH — зашифрованный протокол для удаленного управления серверами. Для подключения через него вы можете каждый раз вводить пароль или настроить авторизацию по ключу. Второй вариант безопаснее, но у него есть свои особенности. В этой статье мы рассмотрим оба метода подключения, а вы уже сами выберите, какой способ удобнее.
Проверка службы SSH на сервере
Доступ по SSH обычно можно включить при создании сервера или во время настройки конфигурации. Убедиться в том, что он разрешен, можно через консоль. Она доступна в панели управления сервером.
Например, у меня VDS на Timeweb. Чтобы попасть в консоль, я авторизуюсь по логину и паролю, выданному хостером, выбираю свой сервер в списке VDS и перехожу на вкладку «Консоль».
Чтобы пользоваться консолью, нужно авторизоваться. Логин и пароль для доступа к серверу хостер присылает в письме. Сначала нужно ввести логин и нажать на клавишу Enter. Появится строка Password. В ней необходимо ввести пароль и снова нажать на клавишу Enter.
Важно: в целях безопасности при вводе пароля на экране не отображаются никакие символы, даже привычные звездочки.
После авторизации в консоли можно проверить, запущена ли служба SSH на сервере.
- Выполните команду systemctl status sshd.
- Обратите внимание на строчку Active. В ней должна быть выделенная зеленым запись active (running). Это состояние говорит о том, что служба запущена.
Если служба не активна, добавьте ее самостоятельно. Выполните команду sudo apt install openssh-server и подтвердите установку пакетов.
Кроме того, для подключения вам может понадобиться настройка брандмауэра. Чтобы межсетевой экран не блокировал входящие соединения, можно на время отключить его командой sudo ufw disable.
Использование пароля
Начнем с инструкции о том, как подключиться к удаленному серверу через SSH по логину и паролю. Это самый простой способ. Хостер предоставляет вам IP-адрес, логин и пароль. Этого достаточно для того, чтобы установить соединение с удаленным сервером.
Подключение на Windows
Моя основная система — Windows. Раньше для подключения к серверу через SSH я пользовался сторонней утилитой PuTTY, потому что в операционной системе не было встроенного компонента. В «десятке» он появился, так что теперь можно подключаться к SSH через командную строку (cmd).
Чтобы включить встроенный в систему OpenSSH:
- Откройте «Параметры» (Win + I) и перейдите в раздел «Приложения».
- Выберите опцию «Управление дополнительными компонентами».
- Нажмите «Добавить компонент».
- Выберите в списке OpenSSH Client и нажмите «Установить».
- После завершения установки перезагрузите систему.
Теперь разберемся, как подключиться к SSH через cmd. Запустите командную строку и выполните запрос вида ssh root@185.104.114.90.
Значение root — логин для подключения, вы получили его в письме при создании сервера. 185.104.114.90 — IP-адрес сервера. Его можно посмотреть в панели управления сервером или в том же письме, которое прислал хостер. У команды может быть также дополнительный параметр -p, после которого прописывается номер порта. По умолчанию используется порт 22. Если у вас настроен другой порт, нужно явно его указать, — например, полный адрес может выглядеть так: ssh root@185.104.114.90 -p 150.
После выполнения команды клиент SSH предложит добавить устройство в список известных. Введите в командной строке yes и нажмите на Enter. Затем укажите пароль для доступа к серверу. На этом подключение завершено — теперь все команды будут выполняться на удаленной машине, к которой вы подключились.
На версиях младше Windows 10 1809 нет встроенной поддержки протокола OpenSSH. В таком случае понадобится сторонняя утилита. Смотрим, как через PuTTY подключиться по SSH:
- Запустите PuTTY.
- На вкладке Session укажите Host Name (IP-адрес сервера), Port (по умолчанию 22, но если вы в конфигурации сервера указали другой порт, нужно задать его номер).
- Убедитесь, что тип соединения установлен SSH.
- Нажмите на кнопку Open, чтобы подключиться.
Если вы ввели правильные данные, появится окно консоли, в котором нужно указать логин и пароль для подключения к серверу. При первом запуске также отобразится запрос на добавление устройства в список известных.
Подключение на Linux и macOS
Теперь посмотрим, как подключиться по SSH через терминал на Linux. Для этого не требуется установка дополнительных компонентов, все работает «из коробки».
- Запустите терминал. Обычно для этого используется сочетание клавиш Ctrl+Alt+T. Найти терминал также можно по пути «Главное меню» — «Приложения» — «Система».
- Выполните команду для подключения. Синтаксис такой же, как на Windows, — ssh root@ 185.104.114.90 . Если порт не стандартный, то нужно явно его указать: например, ssh root@ 185.104.114.90 -p 150. Вместо root вы указываете свое имя пользователя, а вместо 185.104.114.90 — IP-адрес своего сервера.
- Если хост и порт указаны верно, на следующем шаге появится запрос на ввод пароля. При первом подключении также будет предложение добавить новое устройство в список известных. Для этого введите yes и нажмите на клавишу Enter.
На этом подключение завершено. Теперь все команды, которые вы вводите в терминале, будут выполняться на удаленной машине.
Если IP-адрес или порт указаны неверно, то на экране появится сообщение об ошибке — Connection Refused. Это может также говорить о том, что доступ запрещен брандмауэром на удаленном сервере (если вы его не отключили). Чтобы разрешить подключение через SSH:
- на сервере с Ubuntu/Debian выполните команду $ sudo ufw allow 22/tcp;
- на сервере CentOS/Fedora выполните команду $ firewall-cmd —permanent —zone=public —add-port=22/tcp.
Цифра 22 в синтаксисе — номер порта. Если вы используете другой порт, то укажите его явно.
Если вы знаете как подключиться через SSH на Linux, то справитесь с этой задачей и на macOS. В операционной системе Apple тоже есть встроенный терминал. Синтаксис команды для подключения не меняется: ssh root@ 185.104.114.90 , где root — ваш логин, а 185.104.114.90 — IP-адрес сервера, с которым вы устанавливаете соединение.
Источник