[Nix-dev] autofs and sshfs / sane idea?

Marc Weber marco-oweber at gmx.de
Thu Dec 17 22:13:58 CET 2009


Probably you all have seen that NixOS supports autofs.
autofs mounts a filesystem when you access /auto/dir and umounts it
automatically for you.

You can also use fuse mounts such as sshfs.
I googled a bit and all I could find was "use keys without passphrase".
No way!. 

Instead I wrote this sshfs wrapper script:

  #!/bin/sh
  . ~marc/.keychain/nixos-sh &> /dev/null
  # add SSH and SSHFS in PATH:
  export PATH=/var/run/current-system/sw/bin:~marc/.nix-profile/bin
  exec sshfs "$@"

where nixos-sh contains ssh-agent output you set by eval `ssh-agent`
So this is much more secure and exactly what I'm looking for.

However writing this wrapper script is a bit work and I'd like to commit
it to nixos. Using a  .keychain/name-sh file which is written bey
keychain is not an option then. But hey, we're root, aren't we?
So can't we just pgrep for ssh-agents and try them all ?
It shouldn't be too hard to find the socket file either..

Eg lsof does provide all information:

  # lsof | grep /tmp/ssh- | grep agent.                                                                                                                                                  
  ssh-agent  3814       marc    3u     unix 0xffff8801ec1d5100        0t0      15440 /tmp/ssh-oIzuho3813/agent.3813

  3814 is the bid and agent.3813 is the socket file.
        
Is it insane providing such a helper script?

Then you can configure fast access to many ssh locations:

        autoMaster = a:
        let
          map = pkgs.writeText "auto" ''
           linmarc -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536,uid=1008,gid=100 :${a.sshfs}\#marc at lin\:
          '';
        in ''
          /auto file:${map}
        '';

  where a.sshfs is the script iterating over all ssh-agents. Usually you
  have only one running anyway, don't you?

Marc Weber



More information about the nix-dev mailing list