Index: enter_chroot.sh |
diff --git a/enter_chroot.sh b/enter_chroot.sh |
index 663b76c9e3905e1e54fe6d32c640d8e50ca93c20..00aca4ca2d49c0ace89454fe4f127ae63609de25 100755 |
--- a/enter_chroot.sh |
+++ b/enter_chroot.sh |
@@ -31,6 +31,7 @@ DEFINE_boolean official_build $FLAGS_FALSE \ |
"Set CHROMEOS_OFFICIAL=1 for release builds." |
DEFINE_boolean mount $FLAGS_FALSE "Only set up mounts." |
DEFINE_boolean unmount $FLAGS_FALSE "Only tear down mounts." |
+DEFINE_boolean ssh_agent $FLAGS_TRUE "Import ssh agent." |
# More useful help |
FLAGS_HELP="USAGE: $0 [flags] [VAR=value] [-- \"command\"] |
@@ -104,6 +105,20 @@ function setup_env { |
die "Could not mount $MOUNTED_PATH" |
fi |
+ if [ $FLAGS_ssh_agent -eq $FLAGS_TRUE ]; then |
+ TARGET_DIR="$(readlink -f "${FLAGS_chroot}/home/${USER}/.ssh")" |
+ if [ -n "${SSH_AUTH_SOCK}" \ |
+ -a -d "${HOME}/.ssh" ] |
+ then |
+ mkdir -p "${TARGET_DIR}" |
+ cp -r "${HOME}/.ssh/known_hosts" "${TARGET_DIR}" |
+ ASOCK="$(dirname "${SSH_AUTH_SOCK}")" |
+ mkdir -p "${FLAGS_chroot}/${ASOCK}" |
+ sudo mount --bind "${ASOCK}" "${FLAGS_chroot}/${ASOCK}" || \ |
+ die "Count not mount ${ASOCK}" |
+ fi |
+ fi |
+ |
MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}/dev/pts")" |
if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ] |
then |
@@ -274,7 +289,8 @@ fi |
# the source trunk for scripts that may need to print it (e.g. |
# build_image.sh). |
sudo chroot "$FLAGS_chroot" sudo -i -u $USER $CHROOT_PASSTHRU \ |
- EXTERNAL_TRUNK_PATH="${FLAGS_trunk}" LANG=C -- "$@" |
+ EXTERNAL_TRUNK_PATH="${FLAGS_trunk}" LANG=C SSH_AGENT_PID="${SSH_AGENT_PID}" \ |
+ SSH_AUTH_SOCK="${SSH_AUTH_SOCK}" -- "$@" |
# Remove trap and explicitly unmount |
trap - EXIT |