Bem-vindo banner parando scp

7

Nossa equipe decidiu adicionar um banner de boas-vindas a todos os nossos hosts. Um membro da equipe, em vez de adicionar a mensagem em /etc/motd , adicionou a mensagem com echo em ~/.cshrc .

Isso está quebrando scp entre os hosts. Alguém pode explicar como isso está quebrando scp ? cshrc é carregado mesmo quando você faz scp ? E como algumas mensagens de eco irão quebrá-lo?

Não estou ciente do funcionamento interno de scp .

A mensagem que adicionamos em ~/.cshrc :

echo "##############################################################################"
echo "                              Alert! Aler! Alert! Alert! Alert! Alert!"
echo "This is a restricted box, any actions performed here will be reported to [email protected]"
echo "##############################################################################"
    
por tarunkt 31.03.2017 / 11:30

4 respostas

19

Os comandos em execução na parte superior do ssh transport não esperam grandes quantidades de saída antes de poderem iniciar seu servidor. Isso afetará vários utilitários.

A solução é que sua equipe de administração imprima a mensagem somente se stdout estiver conectado a um terminal.

if ( $?prompt ) then
    echo "Secure machine message..."
    echo "More warnings"
    echo "Etc."
endif

Melhor ainda, você não colocaria isso em .cshrc , mas o conteúdo da mensagem seria em /etc/issue.net , que é exibido antes de login. Isso pode precisar ser ativado em /etc/ssh/sshd_config , com uma linha como esta:

Banner /etc/issue.net
    
por 31.03.2017 / 11:58
7

Você não pode imprimir nada em uma sessão não interativa. Isso quebra todos os clientes que usam um protocolo estrito, como SFTP ou SCP.

Use /etc/motd (que é usado apenas para sessões interativas).

Ou use sshd_config directive Banner .

Ou teste a sessão interativa antes de imprimir qualquer coisa (por exemplo, testando a existência de variáveis TERM ou prompt ).

Como plano de fundo, veja minha resposta à pergunta de falha de servidor SSH MOTD por usuário .

    
por 31.03.2017 / 12:08
1

Eu acredito que você tenha que colocar as linhas ABOVE anything no arquivo .cshrc, porque senão, ele não permitirá que você faça sftp ou ftp ou qualquer coisa, porque é um shell interativo:

Esses erros geralmente são causados por comandos em um arquivo de controle de execução do shell (.cshrc, .profile, .bashrc, etc.) que produzem saída para o terminal. Esta saída interfere com a comunicação entre o SSH daemon e o subsistema sftp-server. Exemplos de tais comandos pode ser data ou eco. Se você usar o comando mail para verificar a correspondência, pode causar o erro também. Para resolver este problema, você deve colocar quaisquer comandos que produzirão saída em uma declaração condicional que só é executada se o shell é interativo. (Todas as correções precisam estar no topo dos arquivos de controle para o shell em questão.

Brian Baker

    
por 31.03.2017 / 21:32
0

Está em ~/.cshrc . Acredito que isso facilita a correção. Altere o código em ~/.cshrc para ler

echo 1>&2 "##############################################################################"
echo 1>&2  "                              Alert! Aler! Alert! Alert! Alert! Alert!"
echo 1>&2  "This is a restricted box, any actions performed here will be reported to [email protected]"
echo 1>&2  "##############################################################################"
    
por 01.04.2017 / 06:11