2016-07-27 7 views
1

Ich habe eine CentOS 6.4-Instanz.Wie ssh von Centos 6.4 in einen Andock-Container ohne Passwort?

Auf dieser Instanz kann ich nicht mit einem RSA-Schlüssel in einen Docker-Container, der auf CentOS 6.7 basiert.

Auf Ubuntu (Trusty) und Amazon Linux-Instanzen kann ich in den Docker-Container ssh.

Ich brauche den Befehl ssh (wirklich ansible) und nicht docker exec.

Der Befehl, den ich ausführe, ist ssh -i id_rsa -p 2200 [email protected].

Mein Dockerfile sieht aus, als so:

From centos:6.7 

#update yum repository and install openssh server 
RUN yum update -y 
RUN yum install -y openssh-server 
RUN yum install -y sudo 

RUN useradd user 

RUN echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 

RUN mkdir -p /home/user/.ssh 
ADD id_rsa.pub /home/user/.ssh/authorized_keys 

RUN chown user /home/user/.ssh -R 
RUN chmod 600 /home/user/.ssh/authorized_keys 

#generate ssh key 
RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key 

EXPOSE 22 
CMD ["sh","-c","/usr/sbin/sshd -D;sleep 1"] 

Ich habe bereits Berechtigungen für alle Dateien überprüft (private und öffentliche Schlüssel, authorized_keys) und Verzeichnisse (/.ssh).

Die Tatsache, dass ich SSH auf Amazon Linux zu diesem Container kann mich glauben machen, dass das Problem nicht aus meinem Docker Container noch Berechtigungen für Dateien und Ordner kommen.

Ich habe die PAM auf dem Docker-Container und in der lokalen CentOS geändert.

Ich habe Python zu 2.7.12 aktualisiert (weil das wirklich für ansible ... was auch immer ist).

Der Container läuft.

Ich habe known_hosts entfernt.

Gespielt mit SSH-Konfig.

Beim Hinzufügen -vvvvv meiner ssh Befehl bekomme ich dieses Problem:

debug3: Not a RSA1 key file /path/to/project/dir/id_rsa. 
debug2: key_type_from_name: unknown key type '-----BEGIN' 
debug3: key_read: missing keytype 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug3: key_read: missing whitespace 
debug2: key_type_from_name: unknown key type '-----END' 
debug3: key_read: missing keytype 

Antwort

1

die gemeinsamen Probleme auf der Serverseite sind:

  1. Berechtigungen für die ~/.ssh/authorized_keys sollten 400/600 (Berechtigungen nur für den Besitzer) sein.
  2. PAM-Sicherheit kann ein Problem sein, sollten Sie das PAM sshd_config deaktivieren.
  3. Der Benutzer, der den Server "eingibt" (z. B. Centos) muss aktiviert sein (erscheint in/etc/shadow).
  4. RSA sollte auf der sshd_config aktiviert werden.

Lösungen:

  1. als der Benutzer in sshing (z.B.centos @server):

    chmod 600 ~/.ssh/authorized_keys

  2. als root:

    sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config service sshd reload

  3. für den Benutzer "centos" (Änderung, wenn erforderlich):

    passwd -u -f centos

  4. als root:

    sed -i 's/RSAAuthentication no/RSAAuthentication yes/g service sshd reload


auf der Client-Seite, nur nicht vergessen, den Schlüssel zur Hand, und der Schlüssel sollten zu 600 Berechtigung haben. zB: ssh -i myrsa.key [email protected]

+0

Ich habe das meinem Dockerfile: 'RUN sed -i 's/UsePAM ja/nein UsePAM/g'/etc/ssh/sshd_config RUN yum install passwd -y RUN passwd -f -u Centos –

0

die Sie interessieren in Ihrem Gastgeber:

chmod 700 ~/.ssh 

chmod 600 ~/.ssh/authorized_keys 

sed -i 's|#AuthorizedKeysFile|AuthorizedKeysFile|g' /etc/ssh/sshd_config 
sed -i 's|.ssh/authorized_keys|%h/.ssh/authorized_keys|g' /etc/ssh/sshd_config