Я думаю функция, которую Вы ищете, назван совместным использованием соединения. Добавьте это к Вашему $HOME/.ssh/config
файл:
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
выборка № 1 от SSH Может Сделать Это? Подсказки по производительности для Работы с Удаленными серверами
К счастью, OpenSSH имеет функцию, которая делает его намного более мгновенным для получения другого терминала на сервере, с которым Вы уже подключены: совместное использование соединения.
выборка № 2
Общие соединения не являются просто благом с несколькими окнами терминала; они также делают копирование файлов к и от удаленных серверов бриз. SSH к серверу и затем используют команду scp для копирования файла в него, scp, при использовании существующего соединения SSH ‒... Соединения также совместно используются с rsync, мерзавцем и любой другой командой, которая использует SSH для соединения.
Я создал второй профиль под названием foo
; Вы могли бы просто сделать это в профиле по умолчанию
. Профили подкаталогии / etc / stchroot /
, например / etc / schroot / foo /
, / etc / schroot / по умолчанию /
.
diff -ruw default/fstab foo/fstab
--- default/fstab 2014-05-25 14:03:42.000000000 -0700
+++ foo/fstab 2014-04-03 16:36:42.644336952 -0700
@@ -7,7 +7,7 @@
/sys /sys none rw,bind 0 0
/dev /dev none rw,bind 0 0
/dev/pts /dev/pts none rw,bind 0 0
-/home /home none rw,bind 0 0
+#/home /home none rw,bind 0 0
/tmp /tmp none rw,bind 0 0
# It may be desirable to have access to /run, especially if you wish
diff -ruw default/nssdatabases foo/nssdatabases
--- default/nssdatabases 2014-05-25 14:03:42.000000000 -0700
+++ foo/nssdatabases 2014-04-03 16:36:55.760398695 -0700
@@ -1,11 +1,11 @@
# System databases to copy into the chroot from the host system.
#
# <database name>
-passwd
-shadow
-group
-gshadow
-services
-protocols
-networks
-hosts
+#passwd
+#shadow
+#group
+#gshadow
+#services
+#protocols
+#networks
+#hosts
/ etc / default / copyfiles
также существует, но я оставил туда, поскольку вы обычно делают , хотите скопировать /etc/resolv.conf
.
Шрут делает несколько вещей, чтобы сделать chrooted-систему пригодной для использования. Это задание выполняется сценариями в /etc/schroot/setup.d/
.Эти действия конфигурируются файлами в каталоге профиля schroot, что указывается ключом profile
в конфигурации schroot и по умолчанию / etc / schroot / default /
(конфигурация schroot также может указывать другие расположения файлов, подробности см. В руководстве). Действия при запуске включают:
fstab
в каталоге профиля. copyfiles
из каталога профиля. nssdatabases
из каталога профиля. Это похоже на копирование файлов, но не только, например, скопируйте / etc / passwd
в chroot, он также получает записи из других источников, таких как NIS или LDAP. По умолчанию copyfiles
содержит /etc/resolv.conf
, чтобы гарантировать, что программы в chroot будут иметь доступ к DNS, как и те, которые находятся вне chroot. Настройка chroot по умолчанию предполагает, что вам нужны одни и те же пользователи внутри и вне chroot, поэтому nssdatabases
содержит все обычные базы данных, включая passwd
, и профиль по умолчанию fstab
содержит не только файловые системы, такие как / proc
и / dev
, которые необходимы для работы многих программ, но и / home
.
Если вы не хотите ничего перезаписывать в chroot, объявите профиль schroot без файлов копирования
и nssdatabases
. Вы, вероятно, захотите иметь fstab
, который монтирует все необходимое, но не / home
.
Более полезная конфигурация schroot будет воспроизводить учетные записи пользователей и их домашние каталоги, но не системные учетные записи. Воспроизведение системных учетных записей неудачно, потому что внутри и вне chroot могут быть разные учетные записи. Например, Debian и их производные используют динамически назначаемые учетные записи для большинства системного программного обеспечения,поэтому соответствие между именем пользователя и номером для большинства системных учетных записей зависит от порядка, в котором были установлены программы. Для этого удалите passwd
, shadow
, group
и gshadow
из файла nssdatabases
и напишите свой собственный скрипт, который добавляет только те учетные записи, которые необходимо скопировать.
Вы можете написать следующий сценарий как /etc/schroot/setup.d/20appendaccounts
для копирования только учетных записей в реальном диапазоне пользователей.
#!/bin/sh
## Append users and groups from the host.
set -e
. "$SETUP_DATA_DIR/common-data"
. "$SETUP_DATA_DIR/common-functions"
. "$SETUP_DATA_DIR/common-config"
if [ -z "$SETUP_NSSDATABASES" ] || ! [ -f "$SETUP_NSSDATABASES" ]; then
exit 0
fi
DATABASES='group gshadow passwd shadow'
want () {
grep -qx "#>>$1" "$SETUP_NSSDATABASES"
}
start () {
sed -i -e '/^#begin added by schroot$/,/^#end added by schroot$/d' "$tmpfile"
{
echo '#begin added by schroot'
getent "$db" | case $db in
## passwd, group: copy the range for local human accounts
passwd) awk -F : "$FIRST_UID <= \$3 && \$3 <= $LAST_UID";;
group) awk -F : "$FIRST_GID <= \$3 && \$3 <= $LAST_GID";;
## shadow, gshadow: copy only entries with a password hash
shadow|gshadow) awk -F : '$2 ~ /^\$/';;
esac
echo '#end added by schroot'
} >>"$tmpfile"
}
iterate () {
for db in $DATABASES; do
want "$db" || continue
dbfile=$CHROOT_PATH/etc/$db
tmpfile=$dbfile.$$
[ -f "$dbfile" ] || continue
cp -f -- "$dbfile" "$tmpfile"
"$@"
if ! [ -s "$tmpfile" ] || cmp -s -- "$dbfile" "$tmpfile"; then
rm -f -- "$tmpfile"
else
mv -- "$tmpfile" "$dbfile"
fi
done
}
case $STAGE in
setup-start|setup-recover)
FIRST_UID=1000
LAST_UID=29999
FIRST_GID=1000
LAST_GID=29999
if [ -e /etc/adduser.conf ]; then . /etc/adduser.conf; fi
umask 600
iterate start;;
esac
Отредактируйте файл nssdatabases
вашего профиля, чтобы он содержал следующие строки, или поместите setup.nssdatabases = default / nssdatabases-append
в профиль schroot и напишите следующие строки в по умолчанию / nssdatabases
.
#>>passwd
#>>shadow
#>>group
#>>gshadow
services
protocols
networks
hosts
Schroot не перезаписывает никакие файлы в вашем домашнем каталоге в своей конфигурации по умолчанию. - preserve-environment
относится к переменным среды и здесь не имеет значения.