Soy nuevo en el MacBook y estoy ejecutando El Capitan.
Estoy migrando el uso de mi máquina de una PC a una MacBook. Soy usuario desde hace mucho tiempo de PuTTY y SuperPuTTY en una PC.
Quiero crear y guardar credenciales de inicio de sesión en mis servidores web en MacBook Terminal, tal como lo hice en SuperPuTTY en la PC.
¿Es posible guardar las credenciales de inicio de sesión del servidor web en Mac Terminal?
Aquí está mi objetivo general:
Me gustaría saber si hay una manera fácil en Mac Terminal para almacenar las siguientes credenciales de inicio de sesión de línea de comando y luego usar algún tipo de código abreviado para conectarme a mi servidor web a través de Terminal:
ssh -p 2200 root@123.456.789.012
Password: ****************************************************************
Administro y me conecto a 5 servidores web diferentes, por lo que clasificar y organizar las credenciales de inicio de sesión en un método de conexión corto/rápido sería un gran ahorro de tiempo. Especialmente porque mis contraseñas son cadenas crípticas de 64 caracteres.
Puede copiar su clave pública a las máquinas remotas. Siempre que tengan habilitada la autenticación de clave pública y su clave pública esté presente en la máquina remota, puede acceder ssh
a las máquinas sin tener que proporcionar una contraseña.
Primero deberá generar un par de claves pública/privada así:
ssh-keygen -t rsa
Siga las indicaciones. Cuando le pregunte si desea proteger la clave con una frase de contraseña, diga ¡SÍ! Es una mala práctica no proteger sus claves con contraseña y le mostraré cómo ingresar la contraseña solo de vez en cuando.
Si ya tiene un par de claves, puede omitir el paso anterior.
Ahora, suponiendo que su clave ssh exista en su Mac como ~/.ssh/id_rsa.pub
, puede instalarla en una máquina remota ejecutando:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Para su ejemplo de servidor específico citado anteriormente, el comando se vería así:
cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Deberá ingresar la contraseña para root@123.456.789.012
realizar esta copia, pero esta debería ser la última vez que necesite hacerlo. Suponiendo que el servidor remoto sshd
está configurado para realizar la autenticación de clave pública-privada, cuando haga ssh en el cuadro ahora no debería pedirle una contraseña para la root
cuenta; en su lugar, le pedirá la contraseña para su clave . Siga leyendo para saber cómo hacer que esto sea algo que no necesita ingresar todo el tiempo.
Repita lo anterior para cada máquina a la que desee ingresar con sus claves en lugar de una contraseña.
Tenga en cuenta que cualquier persona que obtenga su ~/.ssh/id_rsa
archivo puede conectarse a esta máquina root
sin proporcionar una contraseña para la máquina remota. La contraseña que protege el archivo de claves garantiza que necesiten saber la contraseña de esa clave para usarla. Asegúrese de que el archivo sea seguro. Use el cifrado de disco en su Mac y mantenga los permisos en el archivo y el ~/.ssh/
directorio ajustados.
Para facilitar el uso de la clave sin tener que ingresar la contraseña cada vez, OS X ejecuta un ssh-agent
proceso en segundo plano en su máquina. Este agente almacenará en caché el par de claves la primera vez que lo use, por lo que solo tendrá que ingresar su contraseña de vez en cuando. Si solo duerme su mac, nunca lo reinicie, puede pasar largos períodos de tiempo sin necesidad de ingresar su contraseña.
Puede precachear todas sus claves SSH con ssh-agent
ejecutando:
ssh-add
Ahora solo necesita recordar la contraseña clave , no las muchas contraseñas de cuentas diferentes. Por lo general, mantengo mis contraseñas clave en 1Password (sin afiliación), lo que simplifica aún más la cantidad de contraseñas que necesito recordar. Luego, simplemente los busco en 1Password y los corto y pego en la Terminal cada vez que reinicio mi Mac y hago que mi ejecución ssh-agent
se reinicie.
Si combina la copia de su clave en máquinas remotas con la solución de administración de conexión de Terminal.app en esta pregunta , tendrá algo muy parecido a PuTTY para la experiencia de conexión de GUI.
En el lado del servidor, verifique /etc/ssh/sshd_config
y asegúrese de:
PubkeyAuthentication yes
está habilitado en la configuración (está por defecto en OpenSSH). También puede configurar:
PasswordAuthentication no
Mientras está allí, la autenticación basada en contraseña está deshabilitada y las claves se convierten en la única forma de acceder a la máquina.
Deberá reiniciar sshd en la máquina si realiza algún cambio en el archivo de configuración.
PasswordAuthentication yes
en el lado del servidor y PuTTY seguirá funcionando como siempre lo ha hecho en su máquina con Windows. Este no es un escenario cualquiera: puede permitir ambos tipos de autenticación en el servidor. PuTTY también admite la autorización de clave pública/privada como este FWIW. Puede copiar sus ~/.ssh/id_rsa*
archivos a su máquina con Windows e importarlos a PuTTY para la autenticación en el servidor. PuTTY, bajo el capó, usa exactamente las mismas bibliotecas de OpenSSH para conectarse que ssh
en OS X.ssh-copy-id
comando es más fácil: ssh-copy-id user@example.com
. No está instalado de forma predeterminada en OS X, pero está brew
lejos....bash_profile
cosas y observé que OS X ejecuta el agente por usted.ssh-add
todavía funciona incluso en Sierra (OS X 10.12). Graciasssh-add -k ~/.ssh/id_rsa
Puede usar sshpass para guardar la contraseña y no tendrá que insertarla cada vez, lo cual no es una buena práctica (problemas de seguridad).
Siga las instrucciones para la instalación de mac os x en: https://gist.github.com/arunoda/7790979
Cuando tenga sshpass instalado, ejecutesshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200
haga lo mismo para sus 5 servidores web y no necesitará insertar la contraseña cada vez.
ssh -p 2200 root@123.456.789.012
y Password: **********************
?ssh-copy-id
no es parte de la distribución estándar de OS X.Además de las claves públicas/privadas, el archivo .ssh/config se puede configurar para facilitar el uso de los comandos ssh, como alias, usuario/puerto predeterminado por servidor, opciones ssh, comandos proxy...
Básicamente, cualquier cosa complicada que pueda poner en un comando ssh también puede estar en este archivo.
He portado Putty a Mac como un paquete de aplicaciones nativas, por lo que no es necesario tener macports o terminales si no eres un usuario técnico.
Más información con capturas de pantalla está aquí: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-disponible.html
Salud,
bmike