Você está na página 1de 15

SSH(1)

NOME

BSD General Commands Manual

SSH(1)

ssh cliente OpenSSH SSH ( programa de login remoto) SINOPSE ssh [ 1246AaCfgKkMNnqsTtVvXxYy ] [ -b bind_address ][ c cipher_spec ] [ D [bind_address:]port][ e escape_char ][ F configfile ][ i identity_file ] [ L [bind_address:]port:host:hostport][ l login_name ][ m mac_spec ] [ O ctl_cmd ][ o option ][ p port ][ R [bind_address:]port:host:hostport] [ S ctl_path ][ w local_tun [:remote_tun]] [user@]hostname [ command ] DESCRIO O ssh (cliente SSH) um programa para se conectar em uma mquina remota e para executar comandos em uma mquina remota. de propsito substituir o rlogin e o rsh, e prover comunicaes criptografadas de forma segura entre dois hospedeiros no confiveis sobre uma rede no segura. As conexes X11 e portas TCP arbitrrias tambm podem ser encaminhadas atravs do canal seguro. O ssh se conecta e faz o login em um hostname especfico (com nome opcional usurio). O usurio deve provar sua identidade mquina remota usando um dos vrios mtodos dependendo da verso usada do protocolo (veja abaixo). Se o comando especificado, ele executado em um hospedeiro remoto ao invs de um acesso shell. As opes esto a seguir: 1 2 4 6 A Obriga o ssh a tentar somente a verso 1 do protocolo. Obriga o ssh a tentar somente a verso 2 do protocolo. Obriga o ssh a usar somente endereos IPv4 Obriga o ssh a usar somente endereos IPv6. Ativa o encaminhamento de uma conexo de autenticao de agente. Isto tambm pode ser especificado numa base por-hospedeiro em um arquivo de configurao. O agente encaminhado deve ser ativado com cuidado. Usurios com a habilidade de ignorar arquivos de permisses em um hospedeiro remoto (para o socket Unix-domain do agente) podem acessar o agente local pela conexo encaminhada. Um atacante no pode obter material chave de um agente, porm eles podem executar operaes nas chaves que permitem que eles se autentiquem usando identidades carregadas no agente. a Desativa o encaminhamento da conexo da autenticao do agente.

b bind_address Usa bind_address na mquina local como o endereo origem da conexo. til somente em sistemas com mais de um endereo. C Requer compresso de todos os dados (incluindo stdin, stdout, stderr, e dados encaminhados X11 e conexes TCP). O algoritmo de compresso o mesmo usado pelo gzip(1), e o nvel pode ser controlado pela opo NvelDeCompresso da verso 1 do protocolo. A compresso desejada em linhas de modem e outras conexes mais lentas, mas ir somente

BSD

Fevereiro 17, 2013

SSH(1)

BSD General Commands Manual

SSH(1)

diminuir as coisas em conexes rpidas. O valor padro pode ser definido em uma base hospedeiro-a-hospedeiro nos arquivos de configurao, veja a opo Compresso. c cipher_spec Seleciona a especificao de cifra para criptografar a sesso. A verso 1 do protocolo permite a especificao de uma cifra nica. Os valores suportados so 3des, blowfish, e des. O 3des (triplo-des) uma tripla encripta-decripta-encripta com trs diferentes chaves. Acredita-se que seja seguro. O blowfish uma cifra de bloco rpida, parece ser muito seguro e bem mais rpido que o 3des. O des suportado somente no cliente ssh para interoperabilidade com a implementao do protocolo 1 que no suporta a cifra 3des. Seu uso fortemente desencorajado devido s deficincias criptogrficas. O padro o 3des. Para a verso 2 do protocolo, cipher_spec uma lista de cifras separadas por virgula listada em ordem de preferncia. Veja a palavra-chave Ciphers para mais informaes. D [bind_address:]porta Especifica um encaminhamento de uma porta de nvel de aplicao local dinmica. Funciona alocando um socket para escutar a porta no lado local, opcionalmente limitado pelo especifico bind_address. Quando uma conexo feita nessa porta, a conexo encaminhada sobre o canal seguro, e o protocolo da aplicao depois usado para determinar aonde se conectar na mquina remota. Atualmente os protocolos SOCKS4 e SOCKS5 so suportados, e o ssh ir atuar como um servidor SOCKS. Somente usurio raz pode encaminhar portas privilegiadas. Encaminhamentos dinmicos de portas podem ser especificados no arquivo de configurao. Endereos IPv6 podem ser especificados com uma sintaxe alternativa: [ bind_address/]porta ou colocando o endereo entre chaves. Somente o super usurio pode encaminhar portas privilegiadas. Por padro, a porta local limitada de acordo com a configurao do GatewayPorts. Porm, um bind_address explcito pode ser usado para ligar a conexo com o endereo especfico. O bin_address de localhost indica que a porta escutada pode ser limitada somente para o usurio local, enquanto um endereo vazio ou * indicar que a porta deve estar disponvel para todas as interfaces. e escape_char Define o caractere de escape para sesses com pty (default: ~). O caractere de escape somente reorganizado no comeo de uma linha. Se o caractere de escape for seguido por um ponto (.) fecha a conexo; seguido por control-Z suspende a conexo; e seguido por si mesmo envia o caractere de escape uma vez. Definindo o caractere como none/nenhum desativa quaisquer escapes e torna a sesso completamente transparente. F configfile Especifica um arquivo de configurao alternativo por usurio. Se um arquivo de configurao passado por linha de comando, o arquivo de configurao de todo o sistema (/etc/ssh/ssh_config ) ser ignorado. O padro para um arquivo de configurao por usurio /.ssh/config. f Pede o ssh para ir para backgrount antes da execuo do comando. til se o ssh vai perguntar por senhas ou frases secretas, mas o usurio o quer em background. Isto implica Fevereiro 17, 2013 2

BSD

SSH(1)

BSD General Commands Manual

SSH(1)

em n. O modo recomendado para iniciar programas x11 em um site remoto com alguma coisa do tipo ssh f host xterm. Se a opo de configurao ExitOnForwardFailure for definida como yes, logo, um cliente iniciado com f ir esperar por todos os encaminhamentos das portas remotas serem estabelecidas com sucesso antes de colocarem si mesmos em background. g Permite hospedeiros remotos a se conectarem a portas de encaminhamento locais.

I smartcard_device Especifica o dispositivo que ssh deve usar para se comunicar com um smartcard usado para guardar a chave privada RSA dos usurios. Esta opo est disponvel apenas se o suporte para dispositivos smartcards forem compilados (padro no suportado). i identity_file Seleciona um arquivo de onde cada identidade (chave privada) para autenticaes RSA ou DAS so lidas. O padro /.ssh/identity para a verso 1 do protocolo, e /.ssh/id_rsa e /.ssh/id_dsa para a verso 2 do protocolo. Arquivos de identidade devem ser especificados em uma base por-hospedeiro em um arquivo de configurao. possvel ter mltiplas opes i (e mltiplas identidades especificadas em um arquivo de configurao). K Ativa a autenticao GSSAPI e encaminha (delegao) das credenciais GSSAPI para o servidor. Desativa o encaminhamento (delegao) das credenciais GSSAPI para o servidor.

L [bind_address:]port:host:hostport Especifica que a porta passada no hospedeiro local (cliente) deve ser encaminhada para o host passado e porta no lado remoto. Isso funciona basicamente alocando-se um socket para escutar uma porta no lado local, opcionalmente ligada ao bind_address. Sempre que uma conexo feita nessa porta, a conexo encaminhada sobre o canal seguro, e a conexo feita do hospedeiro porta hostport da mquina remota. Encaminhamentos de portas podem ser especificados em um arquivo de configurao. Endereos IPv6 podem ser especificados com uma sintaxe alternativa: [ bind_address/]port/host/hostport ou por colocando o endereo entre chaves. Somente o super usurio pode encaminhar portas privilegiadas. Por padro, a porta local ligada de acordo com a configurao GatewayPorts. Porm, um bind_address explcito pode se usado para ligar a conexo a um endereo especfico. O bind_address de um localhost indica que a porta que escuta seja ligada somente para o usurio local, enquanto um endereo vazio ou * indi ca que a porta deve estar disponvel para todas as interfaces. l login_name Especifica o usurio a logar na mquina remota. Isto tambm pode ser especificado em uma base por-hospedeiro em um arquivo de configurao. M Coloca o cliente ssh no modo master para compartilhamento de conexo. Mltiplas opes M coloca o ssh no modo master com confirmao necessria antes que conexes escravas sejam aceitas. Veja a descrio do ControlMaster em ssh_config(5) para mais detalhes. Fevereiro 17, 2013 3

BSD

SSH(1)

BSD General Commands Manual

SSH(1)

m mac_spec Adicionalmente, para o protocolo verso 2 uma lista de algoritmos MAC (cdigo de autenticao de mensagem) separada por vrgula pode ser especificada em ordem de preferncia. Veja a palavra chave MAC para mais informao. N No executa um comando remoto. Pode ser til apenas para portas de encaminhamento (apenas protocolo verso 2). Redireciona stdin para /dev/null (na verdade, previne a leitura do stdin). Deve ser usado quando o ssh roda em background. Um truque comum usar isso para executar programas X11 em uma mquina remota. Por exemplo, ssh n shadows.cs.hut.fi emacs & ir iniciar um emacs em shadows.cs.hut.fi, e a conexo X11 ser automaticamente encaminhada sobre um canal criptografado. O programa shh ir ser colocado em background. (Isso no funciona se o ssh precisar perguntar por uma senha ou frase secreta; veja tambm a opo f.)

O ctl_cmd Controla uma conexo ativa multiplexando processos mestre. Quando a opo O especificada, o argumento ctl_cmd interpretado e passado para o processo mestre. Os comandos vlidos so: check (checa se o processo mestre est executando) e exit (solicita o mestre para sair). o option Pode ser usado para fornecer opes no formato usado no arquivo de configurao. Isto til para especificar opes que no so separadas por uma flag de linha de comando. Para detalhes completos das opes listadas abaixo, e seus possveis valores, veja o ssh_config(5).

AddressFamily BatchMode BindAddress ChallengeResponseAuthentication CheckHostIP Cipher Ciphers ClearAllForwardings Compression CompressionLevel ConnectionAttempts ConnectTimeout ControlMaster ControlPath DynamicForward EscapeChar ExitOnForwardFailure ForwardAgent ForwardX11 ForwardX11Trusted GatewayPorts GlobalKnownHostsFile GSSAPIAuthentication BSD Fevereiro 17, 2013 4

SSH(1)

BSD General Commands Manual


GSSAPIDelegateCredentials HashKnownHosts Host HostbasedAuthentication HostKeyAlgorithms HostKeyAlias HostName IdentityFile IdentitiesOnly KbdInteractiveDevices LocalCommand LocalForward LogLevel MACs NoHostAuthenticationForLocalhost NumberOfPasswordPrompts PasswordAuthentication PermitLocalCommand Port PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication RekeyLimit RemoteForward RhostsRSAAuthentication RSAAuthentication RemoteForward RhostsRSAAuthentication RSAAuthentication SendEnv ServerAliveInterval ServerAliveCountMax StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS VisualHostKey XAuthLocation p porta

SSH(1)

Porta para conectar no hospedeiro remoto. Isto pode ser especificado em uma base porhospedeiro no arquivo de configurao. q Modo quieto. Faz com que a maioria das mensagens de aviso e diagnstico sejam suprimidas. Apenas erros fatais so exibidos. Se um segundo q dado ento mesmo erros fatais so suprimidos, exceto aqueles produzidos por argumentos errados.

R [endereo_de_ligao:]porta:hospedeiro:porta_do_hospedeiro Especifica que a dada porta no hospedeiro (servidor) remoto ser direcionada para o hospedeiro e porta dados no lado no local.Isto funciona por meio de uma alocao de socket para escutar a porta no lado remoto, e quando a conexo feita nesta porta, a conexo

BSD

Fevereiro 17, 2013

SSH(1)

BSD General Commands Manual

SSH(1)

direcionada sobre um canal seguro, e uma conexo feita para hospedeiro na porta porta_do_hospedeiro da mquina local. Direcionamento de portas pode tambm ser especificado no arquivo de configurao. Portas privilegiadas s podem ser direcionadas quando estiver logado como root na mquina remoto. Endereos IPv6 podem ser especificados por meio de um incluso do endereo entre colchetes ou usando uma sintaxe alternativa: [bind_address/]host/port/hostport. Por padro, o socket que est escutando no servidor ser ligado para a interface de loopback somente. Isto pode ser sobrescrito especificando um endereo_de_ligao. Um endereo_de_ligao vazio, ou o endereo , indica que o socket remoto deve escutar em todas as interfaces. Especificando um endereo_de_ligao remoto s ir ter sucesso se a opo GatewayPorts do servidor estiver habilitada (veja ssh_config(5) ). Se o argumento porta for 0, a porta de escuta ser dinamicamente alocada no servidor e reportada para o cliente em tempo de execuo. Quando usado junto com -O forward a porta alocada ser impressa na sada padro. S caminho_ctl Especifica a localizao de um socket de controle para compartilhamento de conexo, ou a cadeia none para desabilitar o compartilhamento de conexo. Consulte a descrio de ControlPath e ControlMaster em ssh_config(5) para detalhes. s Pode ser usado para requisitar uma invocao de um subsistema no sistema remoto. Subsistemas so uma caracterstica do protocolo SSH2 o qual facilita o uso do SSH como um transporte seguro para outras aplicaes (ex. sftp(1)). O subsistema especificado como o comando remoto. T t Desativa a alocao de pseudo-tty. Fora a alocao pseudo-tty Isto pode ser usado para executar programas arbitrrios baseados em tela em uma mquina remota, o qual pode ser muito til, por exemplo quando estiver implementando servios de menu. Mltiplas opes -t foram a alocao tty, mesmo se o ssh no tem um tty local. Mostra o nmero da verso e sai. Modo de detalhe. Faz o ssh imprimir mensagens de depurao sobre o seu progresso. Isto til para depurar problemas de conexo, autenticao e configurao. Mltiplas opes v aumentam o detalhamento. O mximo 3.

-V -v

w local_tun [:remote_tun ] Requisita um encaminhamento de dispositivo de encapsulamento com os dispositivos tun(4) especificados entre o cliente ( local_tun ) e o servidor ( remote_tun ) . Os dispositivos podem ser especificados por ID numrico ou pela palavra-chave any (qualquer), que faz utilizar o prximo dispositivo de encapsulamento disponvel. S e remote_tun no for especificado, any utilizado por padro. Veja tambm as diretivas Tunnel e TunnelDevice em ssh_config(5). Se a diretiva Tunnel estiver indefinida, ser definido o modo de encapsulamento padro, que point-to-point (ponto-a-ponto). X Habilita o encaminhamento de X11. Isto pode ser especificado por hospedeiro no arquivo de configurao.

BSD

Fevereiro 17, 2013

SSH(1)

BSD General Commands Manual

SSH(1)

O encaminhamento de X11 deve ser habilitado com cuidado. Usurios com a habilidade de contorrnar permisses de arquivo no hospedeiro remoto (para o banco de dados de autorizao X do usurio) podem acessar o display X11 local atravs da conexo encaminhada . Uma pessoa pode atacar e conseguir fazer atividades como monitoramento de teclas pressionadas. Por esta razo, o encaminhamento X11 est sujeito por padro extenso de restries X11 SECURITY (segurana). Por favor refira-se opo Y do ssh e a diretiva ForwardX11Trusted no ssh_config(5) para mais informaes. -x Y y Desativa o encaminho de X11. Habilita o encaminhamento confivel de X11. O encaminhamento confivel de X11 no est sujeito aos controles de extenso X11 SECURITY. Envia informaes do log utilizando o mdulo de sistema syslog(3). Por padro esta informao enviada para stderr.

O ssh adicionalmente poder obter dados de configurao de um arquivo de configurao por usurio e um arquivo abrangente do sistema. O formato do arquivo e as opes de configurao so descritos em ssh_config(5). O ssh sai com o status de sada do comando remoto ou com 255 se um erro ocorreu. AUTENTICAO O cliente SSH do OpenSSH suporta os protocolos SSH 1 e 2. Protocolo 2 o padro, com ssh voltando para o protocolo 1 se detectar que o protocolo 2 no suportado. Estas configuraes podem ser alteradas usando a opo Protocol em ssh_config(5), ou impostas usando as opes 1 e 2 (veja acima). Ambos protocolos suportam mtodos semelhantes de autenticao, mas o protocolo 2 prefervel pois proporciona mescanismos adicionais de confidencialidade (o trfego encriptado usando AES, 3DES, Blowfish, CAST128, ou Arcfour) e integridade (hmac- md5, hmac-sha1, umac-64, hmac-ripemd160). O protocolo 1 carece de um forte mecanismo para assegurar a integridade da conexo. Os mtodos disponveis para autenticao so: autenticao baseada em GSSAPI, autenticao baseada em hospedeiro, autenticao por chave pblica, autenticao desafio-resposta, e autenticao por password. Mtodos de autenticao so tentados na ordem especificada acima, embora o protocolo 2 tenha uma opo de configurao para mudar a ordem padro : PreferredAuthentications. A autenticao baseada em hospedeiro funciona da seguinte maneira: Se a mquina que o usurio logar estiver listada em /etc/hosts.equiv ou /etc/ssh/shosts.equiv na mquina remota, e o nome dos usurios so o mesmo em ambos os lados, ou se os arquivos /.rhosts ou /.shosts existirem no diretrio home do usurio na mquina remota e conter uma linha contendo o nome da mquina cliente e o nome do usurio naquela mquina, o usurio considerado para logar. Adicionalmente, o servidor precisa ser capaz de verificar a chave de hospedeiro do cliente (veja a descrio de /etc/ssh/ssh_known_hosts e /.ssh/known_hosts, abaixo) para o login ser permitido. Este mtodo de autenticao fecha buracos na segurana devido a IP spoofing, DNS spoofing, e spoofing de roteamento. [Nota para o administrador: /etc/hosts.equiv, /.rhosts, e o protocolo rlogin/rsh em geral, so inerentemente inseguros e devem ser desativados se a segurana desejada.] A autenticao por chave pblica funciona da seguinte maneira: O esquema baseado na criptografia de chave-pblica, usando criptosistemas onde a encriptao e decriptao so feitas usando chaves separadas, e invivel derivar a chave de decriptao atravs da chave de BSD Fevereiro 17, 2013 7

SSH(1)

BSD General Commands Manual

SSH(1)

encriptao. A idia que cada usurio crie um par chave pblica/privada para o propsito de autenticao. O servidor conhece a chave pblica, e somente o usurio conhece a chave privada. O ssh implementa o protocol de autenticao por chave pblica automaticamente, usando os algoritmos RSA ou DAS. O protocolo 1 restringido a usar somente chaves RSA, mas o protocol 2 pode usar qualquer um. A seo HISTORY de ssl(8) (em sistemas no-OpenBSD, veja http://www.openbsd.org/cgibin/man.cgi?query=ssl&sektion=8#HISTORY) contm uma breve discusso dos dois algoritmos. O arquivo /.ssh/authorized_keys lista as chaves pblicas que so permitidas para efetuar logon. Quando o usurio loga, o programa ssh diz ao servidor qual par de chave gostaria de usar para a autenticao. O cliente prova que tem acesso chave privada e o servidor checa que a chave pblica correspondente est autorizada a aceitar a conta. O usurio cria seu par de chaves executando ssh-keygen(1). Isto armazena a chave privada em /.ssh/identity (protocolo 1), /.ssh/id_dsa (protocolo 2 DSA), ou /.ssh/id_rsa (protocolo 2 RSA) e armazena a chave pblica em /.ssh/identity.pub (protocolo 1), /.ssh/id_dsa.pub (protocolo 2 DSA), ou /.ssh/id_rsa.pub (protocolo 2 RSA) no diretrio home do usurio. O usurio deve ento copiar a chave pblica para /.ssh/authorized_keys em seu diretrio home na mquina remota. O arquivo authorized_keys corresponde ao arquivo /.rhosts convencional, e tem uma chave por linha, embora as linhas podem ser muito longas. Depois disto, o usurio pode efetuar logon sem dar o password. A maneira mais conveniente de usar autenticao por chave pblica pode ser com um agente de autenticao. Veja ssh-agent(1) para mais informaes. A autenticao desafio-resposta funciona da seguinte maneira: O servidor envia um "desafio" arbitrrio em texto, e espera por uma resposta. O protocolo 2 permite mltiplos desafios e respostas; o protocolo 1 restrito a apenas um desafio/resposta. Exemplos de autenticao desafio-resposta incluem Autenticao BSD (veja login.conf(5)) e PAM ( para alguns sistemas no-OpenBSD). Finalmente, se outros mtodos de autenticao falhar, o ssh pede uma senha para o usurio. A senha enviada para o hospedeiro remoto para ser checada; entretanto, j que todas comunicaes so encriptadas, a senha no pode ser vista por algum que esteja escutando a rede. O ssh automaticamente mantm e checa um banco de dados contendo uma identificao de todos os hospedeiros com que ele j foi usado. As chaves do hospedeiro so armazenadas em in /.ssh/known_hosts no diretrio home do usurio. Adicionalmente, o arquivo /etc/ssh/ssh_known_hosts automaticamente checado para hospedeiros conhecidos. Quaisquer novos hospedeiros so automaticamente adicionados no arquivo do usurio. Se a identificao de um hospedeiro mudar, o ssh alerta sobre isto e desativa a autenticao por senha para prevenir ataques de spoof de servidor ou man-in-the-middle, que poderiam caso contrrio ser usados para circundar a encriptao. A opo StrictHostKeyChecking pode ser usada para controlar logins em mquinas cuja chave hospedeira no conhecida ou tenha mudado. Quando a identidade do usurio for aceita pelo servidor, ou o servidor executa o comando dado, ou loga na mquina e d ao usurio um shell normal na mquina remota. Todas comunicaes com o comando remoto ou shell vo ser automaticamente encriptados.

BSD

Fevereiro 17, 2013

SSH(1)

BSD General Commands Manual

SSH(1)

Se um pseudo-terminal foi alocado (sesso normal de login), o usurio poder usar os caracteres de escape escritos abaixo. Se nenhum pseudo-tty foi alocado, a sesso transparente e pode ser usada para transferir dados binrios confiavelmente. Na maioria dos sistemas, definindo o caracter de escape para none tambm far a sesso ser transparente mesmo se um tty for utilizado . A sesso finaliza quando o comando ou shell na mquina remota sai e todas conexes X11 e TCP so fechadas. CARACTERES DE E S C A P E Quando um pseudo-terminal for requisitado, o ssh suporta um nmero de funes atravs do uso de um caracter de escape. Um simples til pode ser enviado como ou colocando um caracter nafrente no til que no esteja descrito abaixo. O caracter de escape deve sempre seguir uma quebra de linha para ser interpretado como especial. O caracter de escape pode ser trocado nos arquivos de configurao usando a diretiva de configurao EscapeChar ou na linha de comando pela opo e. Os escapes suportados (assumindo o padro ) so: . Z # & Desconectar. ssh em background. Listar as conexes encaminhadas. Coloca o ssh em Background no logout quando estiver esperando conexes encaminhadas/ sesses X11 terminarem. Mostra uma lista de caracteres de escape. Envia um BREAK para o sistema remoto (s til para o procotolo SSH verso 2 e se o par suportar). Abre a linha de comando. Atualmente isto permite a adio de encaminhamento de portas usando as opes L, R e D (veja acima). T a mb m p e r mi t e o c a n c e l a me n t o d e e n c ami n h a me n t o s d e p o r t a r e mo t o s e x i s t e n t e s u s a n d o KR[endereo_de_ligao:]porta. !command permite o usurio executar um comando local se a opo PermitLocalCommand estiver habilitada em ssh_config(5). Uma ajuda bsica est disponvel, usando a opo h. Requisita o rechaveamento da conexo (s til para o procotolo SSH verso 2 e se o par suportar).

? B C

ENCAMINHAMENTO TCP O encaminhamento de conexes TCP arbitrrias sobre o canal seguro podem ser especificadas ou na linha de comando ou no arquivo de configurao. Uma possvel aplicao para o encaminhamento TCP uma conexo segura para um servidor de correio eletrnico; outra ir atravs de firewalls. No exemplo abaixo, deparamos com a encriptao da comunicao entre um cliente e servidor IRC, mesmo que o servidor IRC no suporta comunicaes encriptadas diretamente. Isto funciona da BSD Fevereiro 17, 2013 9

SSH(1)

BSD General Commands Manual

SSH(1)

seguinte maneira: o usurio conecta no hospedeiro remoto usando ssh, especificando uma porta para ser usada para encaminhar conexes para o servidor remoto. Depois disso pode-se iniciar o servio o qual ser encriptado na mquina cliente, conectando na mesma porta local, e o ssh ir encriptar e encaminhar a conexo. O exemplo a seguir encapsula uma sesso IRC da mquina cliente 127.0.0.1 (localhost) para o servidor remoto server.example.com: $ ssh -f -L 1234:localhost:6667 server.example.com sleep 10 $ irc -c #users -p 1234 pinky 127.0.0.1 Isto encapsula uma conexo para o servidor IRC server.example.com, unindo ao canal #users, com nickname pinky, usando a porta 1234. No importa qual porta usada, desde que seja maior que 1023 (lembre-se, somente o root pode abrir sockets em portas privilegiadas) e no conflita com qualquer porta que j esteja em uso. A conexo encaminhada para a porta 6667 no servidor remoto, j que esta a porta padro para servios IRC. A opo f faz o ssh ficar em background e o comando remoto sleep 10 especificado para permitir uma quantia de tempo ( 10 segundos, no exemplo) para iniciar o servio que ir ser encapsulado. Se nenhuma conexo for feita no tempo especificado, o ssh sair. ENCAMINHAMENTO X11 Se a varivel ForwardX11 estiver definida como yes (ou veja acima a descrio das opes X, x, e Y) e o usurio estiver usando X11 (a varivel de ambiente DISPLAY est definida), a conexo para o display X11 automaticamente encaminhada para o lado remoto de tal maneira que quaisquer programas X11 iniciados pelo shell (ou comando) iro atravs do canal encriptado, e a conexo para o verdadeiro servidor X ser feita a partir da mquina local. O usurio no deve definir DISPLAY manualmente. Encaminhamento de conexes X11 podem ser configuradas pela linha de comando ou nos arquivos de configurao. O valor definido para DISPLAY pelo ssh ir apontar para a mquina servidor, mas com um nmero de display maior que zero. Isto normal, e acontece porque o ssh cria um servidor X proxy na mquina servidor para encaminhar conexes sobre o canal encriptado. O ssh tambm ir definir dados Xauthority automaticamente na mquina servidor. Para este fim, ele ir gerar um cookie de autorizao aleatria, armazen-lo em Xauthority no servidor, e verificar que as conexes encaminhadas que carregam esse cookie e substitu-lo pelo cookie real quando a conexo aberta. O cookie de autenticao real nunca enviado para a mquina servidor ( e nenhum cookie enviado na ntegra). Se a varivel ForwardAgent definida como yes (ou veja a descrio das opes A e a acima) e o usurio est usando um agente de autenticao, a conexo com o agente automaticamente encaminhada para o lado remoto. VERIFICANDO CHAVES DE HOSPEDEIRO Ao se conectar a um servidor pela primeira vez, um fingerprint (impresso digital) da chave pblica do servidor apresentado ao usurio (a menos que a opo foi StrictHostKeyChecking desativada). Fingerprints podem ser determinados usando ssh-keygen(1):

BSD

Fevereiro 17, 2013

10

SSH(1)

BSD General Commands Manual


$ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

SSH(1)

Se o fingerprint j conhecido, ele pode ser comparado e a chave pode ser aceita ou rejeitada. Por causa da dificuldade de comparar chaves de hospedeiro s de olhar para cadeias hexadecimais, tambm h suporte para comparar chaves de hospedeiro visualmente, usando arte aleatria. Ao definir a opo VisualHostKey para yes, um pequeno grfico ASCII exibido em cada login para um servidor, no importando se a sesso em si interativa ou no. Ao aprender o padro que um servidor conhecido produz, um usurio pode facilmente descobrir que a chave de host mudou quando um padro completamente diferente exibido. Por causa que estes padres no so ambguos no entanto, um padro que se parece com o padro lembrado apenas d uma boa probabilidade de que a chave de hospedeiro a mesma, e no uma prova garantida. Para obter uma lista dos fingerprints, juntamente com sua arte aleatria para todos os hospedeiros conhecidos, a seguinte linha de comando pode ser usada : $ ssh-keygen -lv -f /.ssh/known_hosts Se o fingerprint desconhecido, um mtodo alternativo est dispovel: fingerprints de SSH verificados por DNS. Um registro de recurso (RR) adicional, SSHFP, adicionado a um zonefile (arquivo de zona) e o cliente que est conectando poder comparar o fingerprint com aquele da chave apresentada. Neste exemplo, estamos conectando um cliente para um servidor, host. example.com. O registro de recurso SSHFP deve primeiramente ser adicionado ao zonefile para host.example.com: $ ssh-keygen -r host.example.com. As linhas de sada ter de ser adicionado ao zonefile. Para verificar que a zona est respondendo consultas de impresses digitais:

$ dig -t SSHFP host.example.com


Finalmente, o cliente se conecta: $ ssh -o "VerifyHostKeyDNS ask" host.example.com [...] Matching host key fingerprint found in DNS. Are you sure you want to continue connecting (yes/no)? Para mais informaes, veja o VerifyHostKeyDNS opo em ssh_config(5). SSH BASE VIRTUAL DE REDES PRIVADAS ssh contm suporte para Virtual Private Network (VPN) tunnelling usando o tun(4) rede pseudodevice permitindo que duas redes se juntem de forma segura. O sshd_config(5) opo de configurao PermitTunnel controla se o servidor suporta isso, e em que nvel (camada 2 ou 3 de trfego) . O exemplo a seguir iria ligar a rede cliente 10.0.50.0/24 com a rede remota 10.0.99.0/24 usando uma conexo ponto-a-ponto a partir de 10.1.1.1 a 10.1.1.2, desde que o servidor SSH esteja rodando no gateway para a rede remota, em 192.168.1.15, permitir. No Cliente: # ssh -f -w 0:1 192.168.1.15 true # ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252 # route add 10.0.99.0/24 10.1.1.2 BSD Fevereiro 17, 2013 11

SSH(1)
No Servidor:

BSD General Commands Manual

SSH(1)

# ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252 # route add 10.0.50.0/24 10.1.1.1 O acesso do cliente pode ser mais afinado atravs do arquivo /root/.ssh/authorized_keys (veja abaixo) e a opo do servidor PermitRootLogin. A entrada a seguir permitir conexes em tun(4) dispositivo 1 para o usurio "Jane" e em tun dispositivo 2 para o usurio "john", se PermitRootLogin definido para " forced-commands-only": tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... John Desde uma instalao SSH-based implica em certa quantidade de sobrecarga, pode ser mais adequado para instalaes temporrias, como para VPNs sem fio. VPNs mais permanentes so melhores fornecidas por ferramentas como ipsecctl(8) e isakmpd(8). AMBIENTE ssh normalmente define as seguintes variveis de ambiente: DISPLAY A varivel DISPLAY indica a localizao do servidor X11. automaticamente definida por ssh para apontar a um valor na forma de "hostname:n", onde hostname indica o host onde o shell executado e n um inteiro 1. ssh utiliza este valor especial para transmitir conexes X11 pelo canal seguro.O usurio normalmente no deveria definir DISPLAY explicitamente, como que vai tomar a conexo X11 insegura (e exigir ao usurio copiar manualmente qualquer autorizao necessria de cookies). Definido para o caminho do diretrio home do usurio. Sinnimo de USER; definido para compatibilidade com sistemas que utilizam esta varivel. Definido para o caminho da caixa postal (mailbox) do usurio. Definido para o caminho (PATH) padro, conforme especificado na compilao ssh. Se ssh precisar de uma senha, ele ir ler a senha do terminal atual se ele foi executado a partir de um terminal. Se ssh no tem um terminal associado a ele, mas DISPLAY e SSH_ASKPASS esto definidos, ele ir executar o programa especificado por SSH_ASKPASS e abrir uma janela X11 para ler a senha. Isso particularmente til quando se chama ssh de um .xsession ou escrita relacionada. (Note que em algumas mquinas, pode ser necessrio redirecionar aentrada de /dev/null para fazer este trabalho.) Identifica o caminho de um UNIX-soquete domnio usado para se comunicar com o agente. Identifica as extremidades da conexo cliente e servidor. A varivel contm quatro espaos de valores separados: endereo

HOME LOGNAME MAIL PATH

SSH_ASKPASS

SSH_AUTH_SOCK

SSH_CONNECTION

BSD

Fevereiro 17, 2013

12

SSH(1)

BSD General Commands Manual

SSH(1)

IP do cliente, nmero de porta do cliente, endereo IP do servidor e nmero de porta do servidor. SSH_ORIGINAL_COMMAND Esta varivel contm a linha de comando original se um comando forado executado. Ele pode ser usado para extrair os argumentos originais. Este definido para o nome da tty (caminho para o dispositivo) associado com o shell atual ou comando. Se a sesso atual no tem tty, esta varivel no est definida. Esta varivel definida para indicar o fuso horrio atual se ele foi definido quando o daemon (servidor) foi iniciado (i.e. o daemon (servidor) passa o valor para novas conexes). Definido para o nome do usurio log in

SSH_TTY

TZ

User

Alm disso, o ssh l /.ssh/environment, e adiciona linhas do formato "VARNAME = value" para o ambiente se o arquivo existe e os usurios tm permisso para mudar seu ambiente. Para mais informaes, consulte o PermitUserEnvironment opo em sshd_config(5). FILES /.rhosts Este arquivo utilizado para autentificao do host-based (veja acima). Em algumas mquinas este arquivo pode precisar ser de leitura todos se o diretrio home do usurio est em uma partio NFS, porque sshd(8) o l como root. Alm disso, este arquivo deve ser de propriedade do usurio, e no deve ter permisses de gravao para ningum. A permisso recomendada para a maioria das mquinas de leitura/escrita para o usurio, e no acessveis por outros. /.shosts Este arquivo utilizado exatamente como .rhosts, mas permite a autenticao host-based sem permitir login com rlogin/rsh. /.ssh/ Este diretrio o local padro para todas as configuraes especficas do usurio e informaes de autenticao. No h nenhuma exigncia geral para manter todo o contedo do diretrio este segredo, mas as permisses recomendadas so de leitura /escrita/execuo para o usurio, e no acessveis por outros.

/.ssh/authorized_keys Lista as chaves pblicas (RSA/DSA) que podem ser usadas para fazer login como este usurio. O formato deste arquivo descrito na pgina do manual do sshd(8). Este arquivo no altamente sensvel, mas as permisses recomendadas so de leitura/escrita para o usurio, e no acessveis por outros. /.ssh/config Este o arquivo de configurao por usurio. O formato de arquivo e opes de configurao so descritas em ssh_config(5). Devido ao potencial para o abuso, este arquivo deve ter permisses restritas: leitura/escrita para o usurio, e no acessveis por outros. Ele pode ser de um grupo-gravvel desde que o grupo em questo tenha apenas o utilizador. BSD Fevereiro 17, 2013 13

SSH(1)

BSD General Commands Manual

SSH(1)

/.ssh/environment Contm definies adicionais para variveis de ambiente; veja em AMBIENTE, acima. /.ssh/identity /.ssh/id_dsa /.ssh/id_rsa Contm a chave privada para autenticao. Esses arquivos contm dados sensveis e deve ser legvel pelo usurio mas no acessveis por outros (ler/escrever/executar). ssh ir simplesmente ignorar um arquivo de chave privada se for acessvel por outros. possvel especificar uma senha ao gerar a chave que ser usada para criptografar a parte sensvel deste arquivo utilizando 3DES. /.ssh/identity.pub /.ssh/id_dsa.pub /.ssh/id_rsa.pub Contm a chave pblica para autenticao. Esses arquivos no so sensveis e pode (mas no precisa) ser lido por qualquer pessoa. /.ssh/known_hosts Contm uma lista de chaves host para todos os hosts do usurio conectados que ainda no esto na lista de todo o sistema de chaves host conhecidos. Veja sshd(8) para mais detalhes sobre o formato deste arquivo. /.ssh/rc Comandos deste arquivo so executados por ssh quando o usurio faz login, pouco antes do shell do usurio (ou comando) iniciado. Veja a pgina de manual do sshd(8) para mais informaes. /etc/hosts.equiv Este arquivo para autentificao do host-based (veja acima). Ele s deve ser escrito pelo root. /etc/ssh/shosts.equiv Este arquivo exatamente utilizado da mesma maneira como hosts.equiv, mas permite a autenticao Host-based sem permitir login com rlogin/rsh. /etc/ssh/ssh_config Arquivo de configurao Systemwide. O formato de arquivo e opes de configurao so descritas em ssh_config (5). /etc/ssh/ssh_host_key /etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_rsa_key Estes trs arquivos contm as partes privadas das chaves host e so usados para a autentificao do host-based. Se a verso do protocolo 1 usado, ssh deve ser setuid root, j que a chave do anfitrio legvel apenas pelo root. Para o protocolo verso 2, ssh usa ssh-keysign (8) para acessar as chaves host, eliminando a exigncia do ssh ser setuid root quando usado baseado em host de autenticao. Por padro ssh no setuid root. /etc/ssh/ssh_known_hosts BSD Fevereiro 17, 2013 14

SSH(1)

BSD General Commands Manual

SSH(1)

Systemwide lista de chaves host conhecidas. Este arquivo deve ser preparado pelo administrador do sistema para conter as chaves host pblicas de todas as mquinas da organizao. Deve ser lido/visvel por todos. Veja sshd (8) para mais detalhes sobre o formato deste arquivo. /etc/ssh/sshrc Comandos deste arquivo so executados por ssh quando o usurio faz login, pouco antes que o shell do usurio (ou comando) iniciado. Veja a pgina de manual do sshd (8) para mais informaes. VEJA TAMBM scp(1),sftp(1),ssh-add(1),ssh-agent(1),ssh-argv0(1),ssh-keygen(1), ssh-keyscan(1),ssh-vulnkey(1),tun(4),hosts.equiv(5),ssh_config(5), ssh-keysign(8),sshd(8) The Secure Shell (SSH) Protocol Assigned Numbers, RFC 4250, 2006. The Secure Shell (SSH) Protocol Architecture, RFC 4251, 2006. The Secure Shell (SSH) Authentication Protocol, RFC 4252, 2006. The Secure Shell (SSH) Transport Layer Protocol, RFC 4253, 2006. The Secure Shell (SSH) Connection Protocol, RFC 4254, 2006. Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints, RFC 4255, 2006. Generic Message Exchange Authentication for the Secure Shell Protocol (SSH) , RFC 4256, 2006. The Secure Shell (SSH) Session Channel Break Extension , RFC 4335, 2006. The Secure Shell (SSH) Transport Layer Encryption Modes, RFC 4344, 2006. Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol , RFC 4345, 2006. Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol , RFC 4419, 2006. The Secure Shell (SSH) Public Key File Format, RFC 4716, 2006. A. Perrig and D. Song, Hash Visualization: a New Technique to improve Real-World Security, 1999, International Workshop on Cryptographic Techniques and E-Commerce (CrypTEC 99). AUTORES OpenSSH um derivado do original e livre do ssh 1.2.12 liberado por Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt e Dug Song removeram muitos bugs, redicionaram novas funcionalidades e criaram OpenSSH. Markus Friedl contribuiu com o suporte para verses do protocolo SSH 1.5 e 2.0.

BSD

Fevereiro 17, 2013

15