ssh-copy-id в одной строке с паролем, возможным?

Сколько штата с динамическим дюйм/с? Если небольшое число, Вы могли бы просто заплатить за них, чтобы иметь статического дюйм/с, и Вы сохраняете в целости свою политику безопасности и простую конфигурацию. Я уверен, что Вы уже рассмотрели это.

Если Вы готовы ослабить некоторые политики, Вы могли в теории узнавать свой штат подсети ISP и ограничивать доступ к тем, которые могут значительно уменьшить воздействие, хотя я думаю, что это было бы необычным подходом.

Если Вы серьезно относитесь к обеспечению SSH, необходимо смотреть на ключевые логины только с некоторыми требованиями, чтобы ключи были защищены паролем, и возможно даже истечение их на запланированной основе.

Не предоставляйте свой корневой доступ пользователей SSH. Используйте sudo для предоставления доступа к корневым командам типа. Используйте logwatch или подобный для слежения за тем, что продолжается.

Кроме того, это - веб-сервер - Ваша конфигурация по умолчанию SSH, вероятно, намного более безопасна, чем другие аспекты системы, которую Вы сознательно выставляете Интернету, даже если компромисс был бы более серьезным. Не забывайте об обеспечении остальной части сервера и кода, Вы работаете на нем.

Превосходное руководство по обеспечению сервера Linux может быть найдено здесь. Специфические особенности являются CentOS/RedHat, но он пробегается через большое количество опций, характерных для всех дистрибутивов.

2
задан 21 August 2013 в 09:53
3 ответа

Да, вы можете сделать это с помощью цикла , используя expect .

1
ответ дан 3 December 2019 в 10:06

Вы можете попробовать «грязный» взлом с expect , но это все: грязный взлом.

Правильный способ иметь открытый ключ в только что подготовленном хост должен добавить этот шаг в само предоставление, т. е. включить его в ваш нажатый , кикстарт или пользовательский метод, который вы используете для подготовки хостов.

0
ответ дан 3 December 2019 в 10:06

Here's a method I use to provision new Debian hosts without known ssh keys. Host needs to have python and python-apt packages installed for this playbook to work out of the box. If you want to test it on a VM, you can run Debian installer with boot parameter url=drybjed.github.io - installer will download a preseed file with python and python-apt packages selected (among others). After installation, default password for root account will be debian and you will be forced to change it upon first login.

After installation and first login:

  1. Make sure that you can ssh into the root@host using password (accept host fingerprint, etc.).
  2. Create init.yml:

    hosts: all
     user: root
     sudo: no
     tags: init
     vars:
     - ssh_user: $ENV(USER)
    
     tasks:
     - name: INIT | Create admin system group
     group: name=admins system=yes state=present
     tags: init
    
     - name: INIT | Create admin account from current user
     user: name=$ssh_user state=present shell=/bin/bash groups=admins
     tags: init
    
     - name: INIT | Make sure essential software is installed
     apt: pkg=$item state=latest install_recommends=no
     with_items:
     - python
     - python-apt
     - sudo
     tags: init
    
     - name: INIT | Install ssh public key from current account
     authorized_key: user=$ssh_user key="$FILE(~/.ssh/id_rsa.pub)"
     tags: init
    
     - name: INIT | Install sudoers file for admin accounts
     lineinfile: "dest=/etc/sudoers.d/admins state=present create=yes regexp='^%admins' line='%admins ALL=(ALL:ALL) NOPASSWD: SETENV: ALL' owner=root group=root mode=0440"
     tags: init
    
  3. Run Ansible with: ansible-playbook -k -l host init.yml. Ansible will ask for root password, create a system admins group with access to sudo, create an user account based on your current user, copy your ~/.ssh/id_rsa.pub to your new account, and add it to the admins group.

From now you can use Ansible through your user account using sudo.

3
ответ дан 3 December 2019 в 10:06

Теги

Похожие вопросы