Intereting Posts
Как уменьшить доступ к диску? Установка беспроводного драйвера rtl8812au на Centos 7 Отдельное рабочее пространство на монитор в XFCE Разрешение SSH запрещено публичным ключом Могу ли я запустить grep из cPanel без SSH? Выделение пользовательского синтаксиса в Gedit Как заставить nfs-kernel-server.service инициализировать, когда единственным экспортом NFS являются ZFS? Не удается установить пакет с помощью sudo apt-get install Получить имя модели блока и производителя от псевдо-fs Есть ли способ использовать консольные (мошеннические) режимы только для части экрана терминала? Доступ к зашифрованному Luks диску от FreeBSD Изменение раскладки клавиатуры по ярлыку (только текстовый режим) Как я могу определить, когда мой ноутбук будет спать Примерное значение для nautilus (файловый менеджер) подключается к настраиваемому местоположению службы Проверка ядра linux для исправления RT-Preempt

Передача файлов Сообщение SSH SCP об ошибке: «Stdin: не является tty»

Я использую SSH-терминал Macbook и сгенерировал пары ключей RSA и загрузил удаленный id_rsa.pub с одобренными разрешениями. Я могу подключиться к удаленному веб-серверу Apache. Я могу создавать, открывать, перемещать, изменять и при предварительной проверке управлять файлами на веб-сервере, без проблем … и не генерировать никаких сообщений об ошибках.

Удивительно, но я не могу scp папку или документ с моего рабочего стола на удаленный сервер. Я также не могу scp папку или документ с удаленного сервера на свой рабочий стол. Каждый раз, когда я получаю сообщение об ошибке:

stdin: не является tty

Команда scp на или с удаленного веб-сервера не работает ни с абсолютными, ни с относительными ссылками на расположение файлов.

Мой стандартный синтаксис выглядит так:

От локального хоста:

 scp -rp ~/Desktop/foldername username@secureremoteserver.com:~/public_html 

От удаленного хоста:

 scp -rp username@secureremoteserver.com:~/public_html/foldername ~/Desktop/ 

Это похоже на проблему с stdin: is not a tty сообщение об ошибке stdin: is not a tty .

Что происходит?

Если эта ошибка предотвращает передачу файлов, как мне решить stdin: is not a tty ?

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

Решение состоит в том, чтобы защитить stty чтобы он работал только при наличии интерактивного сеанса. Существует несколько способов сделать это; вот несколько примеров для оболочек bash / sh:

Гадкий:

 stty ... >/dev/null 2>&1 

Работает на меня:

 test -n "$PS1" && stty ... 

Рекомендовано в других странах :

 # Check for a bash login shell case $- in *i*) stty ... ;; esac 

Я не уверен, имеет ли значение для реализации OSX sshd, но в некоторых системах, когда у вас нет tty, подразумеваемый домашний каталог с ~ / конвенцией может не расширяться, и вы можете получить неожиданные результаты. Я знаю, что это не обязательно, но попробуйте указать полные имена путей, а не ~ / construct.

Это происходит со мной, когда мой .bash_profile пытается загрузить. я добавил

[-z "$ {PS1}"] && return;

Наверху и это исправлено