LINUX.ORG.RU

Как заставить работать scp ?

 , , ,


0

1

Прошу помощи у сообщества. Кто знает как разрешить данную проблему, помогите.

Есть авторизаци c помощью LDAPа. Есть пользователь в LDAP.
И это пользователь не может копирывать фалы с помощь scp на ту машину где есть его учетка ( не может в Linux хотя в Windows с помощью WinSCP все копируеться ).

Для авторизации пользователей есть скрипт ( Python ) который выступает в роли оболочки для пользователя. Собственно что он делает.

1) Проверяет есть ли доступ к машине у пользователя ( pam_check_host модуль не подошел. Причина почему ? Не коректно отрабатывает иногда. А коректно должно быть постоянно когда у тебя 300 машин.)
2) Устанавлеваетья TMOUT переменная для пользователя при подключении ( В LDAP добавлен параметр TMOUT )
3) Получает оболочку /bin/bash.

Всего три функции выполняет скрипт.

По ssh вход без проблем. Но вот scp не копирует файлы.

Делал эксперементы, копирование проводилось на тот хост где есть учетка в LDAP.

Для наглядности как копировал:
cat /iotop-0.4.4-1.noarch.rpm | ssh USER@HOSTNAME «cat >/tmp/file»
Что бы увидеть что происходит, потому как scp просто ждет.

И получаю слудующую ошибку:

/bin/bash: строка 1: #��/sn�d44ac02136b83884a0630a6e0c40b36cced53bb6#}
/bin/bash: строка 2: ошибка синтаксиса около неожиданной лексемы `('
/bin/bash: строка 2: `##$!#

И копирование проводилось на хост где нет учетки в LDAPe.
Все скопировалось.

Что вижу из этого, мой /bin/bash.py не принемает каких-то параметров от scp что бы их передать /bin/bash, и вываливаеться ( ждет ). Понимаю что /bin/bash это ПОДОБОЛОЧКА для /bin/bash.py и scp просто не знает что ему делать. Вообщем
если написать вот такой скриптец:

cat >> /bin/bash.sh <<EOF
#!/bin/bash
/bin/bash
EOF
chmod 755 /bin/bash.sh

И это /bin/bash.sh прописать в passwd для пользователя как оболочку.
Так же ни чего копироваться не будет.



Последнее исправление: maxcom (всего исправлений: 2)

А отслеживается ли доступ к неинтерактивным шеллам? Ведь не просто так оно все запускается. Мне кажется такое решение неправильно с самого начала.

Лучше сделайте свои памовские модули, которые вас будут устраивать.

slapin ★★★★★
()
Ответ на: комментарий от slapin

Меня устраивает как работает мой скрипт ... А все что не устраивает это копирование из под Linux c помощью scp потому как с Windows все копирует. Не могу понять в чем проблема.

jetv
() автор топика

Не то, что я типа в этом разбираюсь.... но ИМНО Вы как то странно к вопросу подошли. Есть стандартные средства авторизации, скажем для ssh рулит открытый ключ. Если это все настроено, то все копируется бюез проблем хоть с питона, хоть с баша.

Наконец для питона есть модуль paramiko - вещь своеобразна, но под никс работает.

AIv ★★★★★
()
Ответ на: комментарий от AIv

Нет, пароля не ждет ... Это происходит после ввода пароля. Проблема в том что при подключении выполняеться скрипт /bin/bash.py и подсовывает scp /bin/bash как оболочку. Но scp уже получила /bin/bash.py и все остальное для нее как подоболочка.

Вот что происходит при копировании.

/bin/bash: строка 1: #��/sn�d44ac02136b83884a0630a6e0c40b36cced53bb6#} /bin/bash: строка 2: ошибка синтаксиса около неожиданной лексемы `(' /bin/bash: строка 2: `##$!#

jetv
() автор топика
Ответ на: комментарий от AIv

Даже если бы прокатили ключи этот вариан не подошел бы.

jetv
() автор топика
Ответ на: комментарий от jetv

А зачем вообще ваш bash.py? Для авторизации? Я че то не улавливаю...

Я подобные задачи решал - так есть скока то хостов, на них настроен вход по ключу. Дальше на баше/питоне пишутся скрипты которые че та копируют, че та запускают, в т.ч. и запускают процесс по ssh и дальше общаются с ним через стандартный воод-вывод - все прекрасно работает.

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.